簡體   English   中英

Servlet JSP異常/錯誤處理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM