我正在尝试使用JSP errorpage配置来处理异常。然而它失败了。请指出我做错的地方。 这不是任何实时应用程序,我正在尝试一个场景。
最初的jsp页面:
的Page1.jsp
<body>
<form action="process.do" method="post">
<input type="Submit" />
</form>
</body>
的web.xml
<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>com.examples.example.Servlet1</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<error-page>
<exception-type>javax.servlet.ServletException</exception-type>
<location>/errorpage.jsp</location>
</error-page>
<error-page>
<exception-type>java.sql.SQLException</exception-type>
<location>/errorpage.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/errorpage.jsp</location>
</error-page>
Servlet1.java
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
String s = null;
if (s.equals("")) {
}
} catch (Exception ex) {
throw new ServletException("my custom exception message");
}
}
的errorPage.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" isErrorPage='true'%>
<html>
<head>
<title>Error Page</title>
</head>
<body>
<%
out.print("Error Message : ");
out.print(exception.getMessage());
%>
</body>
</html>
问题 - 我希望显示此错误页面。但相反,我得到一个HTTP 500错误,这是我在控制台日志中看到的:
SEVERE: Servlet.service() for servlet [servlet1] in context with path [/simpleServlet] threw exception [my custom exception message] with root cause
javax.servlet.ServletException: my custom exception message
at com.examples.example.Servlet1.doPost(Servlet1.java:48)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
答案 0 :(得分:2)
这是我在下面的博客链接上的一条评论中找到的
使用&#34; errorpage&#34;存在严重问题。 &#34; isErrorpage&#34;并且在web.xml文件中声明错误页面,它在Internet Explorer至少版本6和7中没有正确显示,而是显示它自己的页面404的IE错误页面和内部服务器错误500.更好的方法是使用Spring异常处理和为Spring的异常处理程序定义默认错误视图。通过这种方式,您将在所有浏览器上获得一致的行为,因为错误页面不会被视为错误页面而是被视为另一个jsp页面。我花了很多时间用IE6来弄清楚这个bug,你可以节省宝贵的时间。还有另一种理论认为,如果错误页面的大小小于512字节,IE和chrome将显示自己的错误页面。我测试了这个,但在我的情况下,即使大小超过512字节,它仍然显示&#34;内部服务器错误-500&#34;唯一有效的解决方案是使用Spring异常处理
了解详情:http://javarevisited.blogspot.com/2012/01/error-page-in-java-web-application.html#ixzz2xZ35ziPQ