在JSP,web.xml中指定錯誤頁面
阿新 • • 發佈:2019-01-23
友好的錯誤提示頁面,我們可以自定義錯誤頁面:
webxml中的配置
步驟如下:
一、開啟WEB-INF資料夾下web.xml檔案;
二、在裡面新增:
<!-- 404 頁面不存在錯誤 -->
<error-page>
<error-code>404</error-code>
<location>/errorpage404.htm</location>
</error-page>
<!-- 500 伺服器內部錯誤 -->
<error-page>
<error-code>500</error-code>
<location>/errorpage500.htm</location>
</error-page>
<!-- java.lang.Exception異常錯誤,依據這個標記可定義多個類似錯誤提示 -->
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/exception.htm</location>
</error-page>
三、儲存web.xml檔案,重啟應用伺服器。
★ 在web.xml中,可以使用exception-type標籤或HTTP狀態碼error-code標籤宣告錯誤頁面。
根據異常類宣告錯誤頁面:
<error-page>
<exception-type>java.io.IOException</exception-type>
<location>/error.jsp</location>
</error-page>
exception-type指定的必須是一個Throwable,並且這個類在容器的類路徑下能夠被找到。
根據HTTP狀態碼宣告錯誤頁面:
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
使用error-page標籤的要點:
① 不論是根據exception-type還是error-code來宣告錯誤頁面,location指定的路徑必須以斜線開頭,也就是說它是相對於Web應用根的。
② 一個web.xml中可以使用多個error-page標籤,一個error-page標籤中只能使用一個exception-type或error-page。
★ 在JSP中,可以在page指令中通過errorPage屬性來指定錯誤頁面:
<%@ page errorPage="error.jsp" %>
★ 容器會為錯誤頁面提供一個exception物件,不過要想在錯誤頁面裡訪問這個物件,必須在錯誤頁面裡指定isErrorPage屬性:
error.jsp
<%@ page isErrorPage="true" %>
然後,在scriptlet中就可以使用隱式物件exception,在EL中可以使用EL隱式物件${pageContext.exception}。
★ 其它要點:
如果是JSP中丟擲的異常,容器首先檢視JSP中有沒有指定errorPage屬性,如果沒有,再檢視web.xml中有沒有error-page標籤;如果是Web應用中的其它地方丟擲異常,容器只會檢視web.xml中的error-page標籤。
可以通過HttpServletResponse.sendError()方法來發送錯誤的HTTP狀態碼:
response.sendError(HttpServletResponse.SC_FORBIDDEN);
webxml中的配置
步驟如下:
一、開啟WEB-INF資料夾下web.xml檔案;
二、在裡面新增:
<!-- 404 頁面不存在錯誤 -->
<error-page>
<error-code>404</error-code>
<location>/errorpage404.htm</location>
</error-page>
<!-- 500 伺服器內部錯誤 -->
<error-page>
<error-code>500</error-code>
<location>/errorpage500.htm</location>
</error-page>
<!-- java.lang.Exception異常錯誤,依據這個標記可定義多個類似錯誤提示 -->
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/exception.htm</location>
</error-page>
三、儲存web.xml檔案,重啟應用伺服器。
★ 在web.xml中,可以使用exception-type標籤或HTTP狀態碼error-code標籤宣告錯誤頁面。
根據異常類宣告錯誤頁面:
<error-page>
<exception-type>java.io.IOException</exception-type>
<location>/error.jsp</location>
</error-page>
exception-type指定的必須是一個Throwable,並且這個類在容器的類路徑下能夠被找到。
根據HTTP狀態碼宣告錯誤頁面:
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
使用error-page標籤的要點:
① 不論是根據exception-type還是error-code來宣告錯誤頁面,location指定的路徑必須以斜線開頭,也就是說它是相對於Web應用根的。
② 一個web.xml中可以使用多個error-page標籤,一個error-page標籤中只能使用一個exception-type或error-page。
★ 在JSP中,可以在page指令中通過errorPage屬性來指定錯誤頁面:
<%@ page errorPage="error.jsp" %>
★ 容器會為錯誤頁面提供一個exception物件,不過要想在錯誤頁面裡訪問這個物件,必須在錯誤頁面裡指定isErrorPage屬性:
error.jsp
<%@ page isErrorPage="true" %>
然後,在scriptlet中就可以使用隱式物件exception,在EL中可以使用EL隱式物件${pageContext.exception}。
★ 其它要點:
如果是JSP中丟擲的異常,容器首先檢視JSP中有沒有指定errorPage屬性,如果沒有,再檢視web.xml中有沒有error-page標籤;如果是Web應用中的其它地方丟擲異常,容器只會檢視web.xml中的error-page標籤。
可以通過HttpServletResponse.sendError()方法來發送錯誤的HTTP狀態碼:
response.sendError(HttpServletResponse.SC_FORBIDDEN);