enter image description here,当我尝试自定义错误页面时,发现网络无法按预期跳转。程序从服务器获得“ 404”响应时,它会正确跳转,但是当获得“ 500”时,它将无法工作。
我尝试交换位置,并且使用不同的html文件,结果始终是相同的,“ 404”部分可以很好地工作,而“ 500”部分则不能。我尝试使用重定向,神奇的事情发生了,它起作用了!你能解释一下吗?
@Controller("error")
公共类GrobalException实现ErrorController { //私有静态最终字符串ERROR_PATH =“ / error”;
@RequestMapping(value = "/error")
public String handleError(HttpServletRequest request) {
Object status=request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
if(status!=null){
Integer statuscode=Integer.valueOf(status.toString());
if(statuscode==HttpStatus.NOT_FOUND.value()){
return "404";
}
else if(statuscode==HttpStatus.INTERNAL_SERVER_ERROR.value()){
System.out.println("status is "+statuscode+" intern is "+HttpStatus.INTERNAL_SERVER_ERROR.value());
return "success";//If i change it to "return "redirect:/success", and define new controller for it, that can jump to success.html
}
}
return "test";
}
@Override
public String getErrorPath() {
return "/error";
}
}
我应该认为它们是同一回事,为什么我应该使用不同的代码来实现不同的错误代码。
答案 0 :(得分:0)
您不需要编写复杂的代码。
@Controller
@RequestMapping("/")
public class ErrorController {
@RequestMapping(value = "404",method = RequestMethod.GET)
public String Page404(ModelMap model) {
return "404";
}
@RequestMapping(value = "500",method = RequestMethod.GET)
public String Page500(ModelMap model) {
return "500";
}
}
web.xml
<error-page>
<error-code>404</error-code>
<location>/404</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500</location>
</error-page>
404.jsp
<html>
<body>
<h1>This is custom 404 page.</h1>
</body>
</html>
500.jsp
<html>
<body>
<h1>This is custom 500 page.</h1>
</body>
</html>