在jsp页面用page指令定义errorPage属性(只能用于本页面):
jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" errorPage="/errors/errors.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>jsp指令</title>
</head>
<body>
This is my JSP page. <br>
<%
if(true){
int x = 1/0;
}
%>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'errors.jsp' starting page</title>
</head>
<body>
对不起,出错啦!
对不起,出错啦!
对不起,出错啦!
对不起,出错啦!
对不起,出错啦!
对不起,出错啦!
对不起,出错啦!
对不起,出错啦!
对不起,出错啦!
</body>
</html>
在web.xml配置文件中配置<error-page>元素(用于全局):
web.xml:
<error-page>
<exception-type>java.lang.ArithmeticException</exception-type>
<location>/errors/errors.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/errors/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/errors/500.jsp</location>
</error-page>
jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP '404.jsp' starting page</title>
</head>
<body>
对不起,您访问的资源不存在!!!!!!!
对不起,您访问的资源不存在!!!!!!!
对不起,您访问的资源不存在!!!!!!!
对不起,您访问的资源不存在!!!!!!!
对不起,您访问的资源不存在!!!!!!!
对不起,您访问的资源不存在!!!!!!!
对不起,您访问的资源不存在!!!!!!!
对不起,您访问的资源不存在!!!!!!!
对不起,您访问的资源不存在!!!!!!!
对不起,您访问的资源不存在!!!!!!!
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP '500.jsp' starting page</title>
</head>
<body>
对不起,服务器内部出现错误!!!
对不起,服务器内部出现错误!!!
对不起,服务器内部出现错误!!!
对不起,服务器内部出现错误!!!
对不起,服务器内部出现错误!!!
对不起,服务器内部出现错误!!!
对不起,服务器内部出现错误!!!
对不起,服务器内部出现错误!!!
对不起,服务器内部出现错误!!!
对不起,服务器内部出现错误!!!
对不起,服务器内部出现错误!!!
对不起,服务器内部出现错误!!!
对不起,服务器内部出现错误!!!
</body>
</html>
PS: 1.错误处理页面要大于1KB,否则可能会无效。
2.page指令的errorPage属性优先级高于web.xml文件配置的<error-page>。
3.错误处理页面最好用page指令定义isErrorPage="true"属性,这样可以得到exception隐式对象。
jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP '6.jsp' starting page</title>
</head>
<body>
这是中国人
</body>
</html>
PS: 在eclipse环境中,对于jsp中文乱码问题,只要page指令定义pageEncoding="UTF-8"就可以了。它会自动把jsp保存为UTF-8编码,自动设置response码表为UTF-8,而且浏览器默认用UTF-8编码打开页面。