Spring MVC配置404或500等错误页面

本文介绍了如何在Java Web项目中创建自定义的404和500错误页面,并通过web.xml配置错误码与页面映射,以及控制器处理请求转发。此外,还展示了如何配置特定异常类型的错误页面,例如针对IndexOutOfBoundsException,并通过人为触发异常进行测试验证。
摘要由CSDN通过智能技术生成

第一步,创建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异常
    }
}

测试效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值