JSP 內建聲明式錯誤處理機制,通過 page 指令配置錯誤頁,自動捕獲未處理異常並轉發至指定頁面展示友好提示,避免暴露堆棧信息給用戶。
| 頁面類型 | 指令屬性 | 說明 |
|---|---|---|
| 主業務頁 | errorPage="errorpage.jsp" | 發生異常時轉發的目標錯誤頁路徑 |
| 錯誤頁 | isErrorPage="true" | 聲明當前頁為錯誤處理頁,啟用 exception 內置對象 |
<%@ page errorPage="errorpage.jsp" %>
<html><head><title>JSP Error Demo</title></head><body>
<h1>JSP 1.0 Error Page Demo</h1>
<%
String s = null;
s.getBytes(); // 故意拋出 NullPointerException
%>
</body></html>
<%@ page isErrorPage="true" %>
<html><body bgcolor="black" text="#FFFFFF">
<h1>Attention: The following error occurs</h1><br>
<pre><%= exception.getMessage() %></pre>
<!-- 可進一步記錄 exception.printStackTrace() 到日誌 -->
</body></html>
errorPage 配置,構建包含 exception 對象的請求。exception 內置對象獲取異常信息展示/記錄。<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/global-error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
優先級:頁面級 errorPage > 全局 error-page。生產環境建議配置全局 404/500 頁面。