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

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

被折叠的 条评论
为什么被折叠?



