您的位置:首页 > 其它

Whitelabel Error Page(2)之Internal Server Error

2017-09-07 18:15 561 查看
Whitelabel Error Page
功能

访问路劲url

出错原因

实例如下

代码块

代码解释

错误总结

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Sep 07 17:27:34 CST 2017
There was an unexpected error (type=Internal Server Error, status=500).
No message available


功能:

从页面的url中手动输入用户名和密码,来验证是否可以登录

url:

http://localhost:8080/status?username=需要手动输入的值&password=需要手动输入的值

访问路劲url

http://localhost:8080/status?username=admin&pass=123

出错原因

url中传入的参数pass应该改为password,正确的url如下:

http://localhost:8080/status?username=admin&password=123

实例如下:

正确的url:

http://localhost:8080/status?username=admin&password=123

返回我们想看到的200成功的页面:



不正确的url(1) —– 传入的参数password写成pass

http://localhost:8080/status?username=admin&pass=123

返回我们很害怕的错误页面



不正确的url(2) —– 密码错误导致的404错误页面

http://localhost:8080/status?username=admin&password=1

返回我们不喜欢的404错误页面



代码块

@RestController
@RequestMapping("/status")
public class StatusController {
private String username = "admin";
private String password = "123";

@RequestMapping(value = "")
public JsonResult getStatus(HttpServletRequest request, HttpServletResponse response, @RequestParam Map<String,String> map){
if(map.get("username").equals(username) && map.get("password").equals(password)){
return new JsonResult(StatusCode.SUCCESS.getCode(),StatusCode.SUCCESS.getMessage(),new Date());
}else{
return new JsonResult(StatusCode.ERROR.getCode(),StatusCode.ERROR.getMessage(),new Date());
}
}
}


代码解释:

1. 根据以上代码块,可以看出在访问的路劲url中的参数username和password将会传给后台的代码,而后台是以map来存储前台传入的参数username和password

2. 就是说,我们在页面输入的username=某个值和passowrd=某个值将会存到map中,而当我们获取这些值需要从map中来获取

3. 由于map是以键值对存储的,就是说url访问路劲中username=admin,那么key存的是username这个变量名,而value存的是admin。即

map:

key: username

value:admin

map:

key:password

value:123

所以当我们访问url时,url中传入的参数变量名必须与代码中get获取的key变量名相等(map.get(“username”)),即在http://localhost:8080/status?username=admin&password=123 中的username和password不能随便乱写,是代码中定义好的,否则报服务器内部错误,即代码问题

4. 当访问url时,type = Internal Server Error,在后台IDEA 也会看到运行时错误信息,如下:



空指针异常,这种错误就是对象为null,所以从报错提示中的代码行可以判断为null的对象有三个可能性。

1. map

2. map.get(“username”)

3. map.get(“password”)

map不可能为null,map是接口,直接可以调用方法

map.get(“username”),查看访问路劲url,有username字段,所以也不可能为Null

map.get(“password”),查看访问路劲url*,没有password字段,只是有pass字段,所以map.get(“password”)为null

if(map.get("username").equals(username) && map.get("password").equals(password)){


判断空指针异常第二种方法 – debug

设置断点





参考:IntelliJ IDEA Debug调试案例一

错误总结

type=Internal Server Error 这种错误后台运行时会报错

type=Internal Server Error 出现的可能性:

1. 代码的问题,需要修改代码。

2. 前台页面传入的数据与后台代码不吻合。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  error
相关文章推荐