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=需要手动输入的值
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
不正确的url(1) —– 传入的参数password写成pass
http://localhost:8080/status?username=admin&pass=123
不正确的url(2) —– 密码错误导致的404错误页面
http://localhost:8080/status?username=admin&password=1
@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:adminmap:
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)){
参考:IntelliJ IDEA Debug调试案例一
type=Internal Server Error 这种错误后台运行时会报错
type=Internal Server Error 出现的可能性:
1. 代码的问题,需要修改代码。
2. 前台页面传入的数据与后台代码不吻合。