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等错误页面的主要内容,如果未能解决你的问题,请参考以下文章

struts2+spring 配置404和500错误页面

我如何在 Spring Boot/MVC 中创建错误处理程序(404、500...)

zbb20180921 springboot 全局异常处理 404 500

Mac intellj idea开发Spring MVC,404网页错误

web项目错误页面友好处理404,500等

springboot使用之四:错误页面404处理建议