2024年12月7日 星期六

JSP 的error頁面控制

 jsp在處理error有以下三種

1.使用<% scriptlet %> 加上傳統try catch自行控制

2.使用jstl的<c:catch>標籤自行控制

3.使用jsp的errorPage設定交給別的頁面處理(又分兩種形式)

   a.單一網頁控制errorPage 

     錯誤發起頁面必須有<%@page errorPage="接收error頁面.jsp" %>設定

     範例如下:(檔名為badPage.jsp)  

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@page errorPage="errorPage.jsp" %>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

About to be bad....

<% int x=5/0; %>

</body>

</html>

    接收error頁面.jsp範例必須有<%@page isErrorPage="true" %>設定

     isErrorPage="true"代表可接收前網頁送來exception物件

    範例如下:(檔名為errorPage.jsp) 

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@page isErrorPage="true" %>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

=_=..................show errorPage<br>

Exception is a ${pageContext.exception}

</body>

</html>

 b.針對全域或特定類型網頁在web.xml做設定

   宣告全體適用錯誤處理頁面

<error-page>

<exception-type>java.lang.Throwable</exception-type>

<location>/errorPage.jsp</location>

</error-page>

   宣告特定例外錯誤處理頁面

<error-page>

<exception-type>java.lang.ArithmeticException</exception-type>

<location>/ArithmeticError.jsp</location>

</error-page>

   宣告HTTTP ERROR CODE用錯誤處理頁面

<error-page>

<error-code>404</error-code>

<location>/notFoundPage.jsp</location>

</error-page>