Global error.jsp
背景:在一个老项目(12年以上 )中添加全局错误处理页面,当出现404, 500等Error时转到error.jsp页面,需求挺简单,过程有些坑。
- Web.xml
- error.jsp
- K E N G
Web.xml
<error-page>
<exception-type>500</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page>
<exception-type>404</exception-type>
<location>/notfound.jsp</location>
</error-page>
error.jsp
Location
/webroot/error.jsp
File content
<%@ page language="java" contentType="text/html; charset=Utf-8"isErrorPage="true"
pageEncoding="Utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Utf-8">
<title>Global Error</title>
</head>
<body>
There are some errors!
</body>
</html>
error.jsp
本以为轻松搞定,测试时却发现无论是出现404还是500都不能跳转到error.jsp
求助搜索,得到以下信息:
- 确保error-page 中location属性填写的是绝对路径
- 确保error.jsp的大小 > 1024byte
- 确保error.jsp 页面中添加 isErrorPage=”true”
当我的设置都达到这三点时,问题依然,无论是出现404还是500都不能跳转到error.jsp
继续搜索,发现几篇不同blog中谈到的error.jsp的大小不一致,由人说512byte,有人说1024byte,还有人说要 1XX KB
然后我就在页面中添加了一个不可见的DIV,在里面添加一些无用的内容,使得error.jsp达到了19KB
再然后问题解决了,出现404和500时跳转到error.jsp (⊙﹏⊙)b