Spring MVC配置404或500等错误页面
Posted 二木成林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring MVC配置404或500等错误页面相关的知识,希望对你有一定的参考价值。
第一步,创建400.jsp和500.jsp,这里仅作展示,所以页面不好看,可以去网上搜罗好看的错误页面。
404.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>404</title>
</head>
<body>
<h1>404</h1>
</body>
</html>
500.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>500</title>
</head>
<body>
<h1>500</h1>
</body>
</html>
第二步,在项目的web.xml文件中配置<error-page>标签,该标签就是用来配置这些页面的。
在<location>标签中配置映射路径,这些映射路径是程序员自定义的,如/404、/500等
注意,<location>标签中也可以直接写错误页面的路径,就不需要控制器处理映射请求的转发了,如下:
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
然后可以通过<error-code>标签指定错误的响应码,这是很有效的
例如:
<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这种映射请求的转发跳转,其实就是将"/404"请求后跳转到"404.jsp"页面
@Controller
public class ErrorController {
@RequestMapping("/404")
public String page404(){
return "404.jsp";
}
@RequestMapping("/500")
public String page500(){
return "500.jsp";
}
}
第四步,测试如下
补充:还可以在<error-page>标签下配置<exception-type>标签,配置特定的异常才跳转错误页面。并且<exception-type>标签和<error-code>标签不能同时出现,只能二选一。
先创建一个提示异常(如IndexOutOfBoundsException)的JSP页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>IndexOutOfBoundsException</title>
</head>
<body>
<h1>IndexOutOfBoundsException</h1>
</body>
</html>
接着在web.xml中配置异常及发生异常后的跳转页面:
<error-page>
<exception-type>java.lang.IndexOutOfBoundsException</exception-type>
<location>/indexOutOfBoundsException.jsp</location>
</error-page>
在控制器类中人为制造IndexOutOfBoundsException异常
@Controller
public class IndexController {
@RequestMapping("/abc")
public void abc() {
Integer[] nums = new Integer[10];
System.out.println(nums[12]);// 人为制造IndexOutOfBoundsException异常
}
}
测试效果
以上是关于Spring MVC配置404或500等错误页面的主要内容,如果未能解决你的问题,请参考以下文章
我如何在 Spring Boot/MVC 中创建错误处理程序(404、500...)
zbb20180921 springboot 全局异常处理 404 500