[英]Servlet JSP exception/error handling
我正在嘗試使用JSP錯誤頁面配置來處理異常。 但是它失敗了。 請指出我做錯了什么。 這不適用於任何實時應用程序,我正在嘗試一個場景。
最初的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)
這是我在以下博客鏈接的評論之一中找到的
使用“ errorpage”“ isErrorpage”並在web.xml文件中聲明錯誤頁面時存在嚴重問題,它在Internet Explorer至少版本6和7中無法正確顯示,而是顯示其自己的IE錯誤頁面(針對頁面404)內部服務器錯誤500。更好的方法是使用Spring異常處理並為Spring的Exception處理程序定義默認錯誤視圖。 這樣,您將在所有瀏覽器上獲得一致的行為,因為錯誤頁面不會被視為錯誤頁面,而是會被視為另一個jsp頁面。我花了很多時間來解決IE6的錯誤,您可以節省寶貴的時間時間。 還有一種理論認為,如果錯誤頁面的大小小於512字節,則IE和chrome將顯示其自己的錯誤頁面。 我已經對此進行了測試,但是就我而言,即使大小超過512字節,它仍然顯示“內部服務器錯誤-500”。唯一有效的解決方案是使用Spring Exception處理
了解更多: http : //javarevisited.blogspot.com/2012/01/error-page-in-java-web-application.html#ixzz2xZ35ziPQ
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.