Programing/JSP

JSP :: 톱켓 :: web.xml 이용하여 에러페이지 처리하기

Dongkkase 2008. 11. 28. 01:35
반응형

코딩하다 오타났을때나
혹은 값전달이 안될때 등등..
그럴때
여러 에러페이지가 뜬다(400에러 페이지라던가 500에러페이지)
요런 에러페이지를 그냥 뿌려주면 얼마나 보기 싫은지...-_-
디버깅 할때는 좋지만 에러페이지를 처리해주는것도 좋을 듯하다..

web.xml을 열고
아래의 코드를 추가하고 저장.

<error-page>
    <error-code>401</error-code>
    <location>/WEB-INF/error/errorPage.jsp</location>
</error-page>
<error-page>
    <error-code>403</error-code>
    <location>/WEB-INF/
error/errorPage.jsp</location>
</error-page>
<error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/
error/errorPage.jsp</location>
</error-page>
<error-page>
    <exception-type>java.lang.NullPointerException</exception-type>
    <location>/WEB-INF/
error/errorPage.jsp</location>
</error-page>
<error-page>
     <exception-type>java.lang.Throwable</exception-type>
     <location>/WEB-INF/
error/errorPage.jsp</location>
</error-page>
<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/WEB-INF/
error/errorPage.jsp</location>
</error-page>


그리고 해당 작업중인 폴더안에 /WEB-INF/error 폴더 생성후 페이지 처리할 파일을 만든다.
그리고 일부러 에러내고 한번 테스트-_-)/
평소엔 에러페이지 어떻게든 안내려고했는데 요번에는 어떻게든 에러페이지를 띄우려
고생..-_-
각설하고...

ERROR PAGE에서 활용하는 방법

${requestScope['javax.servlet.error.status_code']}

javax.servlet.error.status_code:
        에러 상태 코드를 말해 주는 정수
javax.servlet.error.exception_type
        에러가 생기게 된 예외 형을 지적해 주는 클래스 인스턴스
javax.servlet.error.message
        예외 메시지를 말해주는 스트링이며, 예외 컨스트럭터로 보내어 진다.
javax.servlet.error.exception
        실제 예외가 없어지면 버릴 수 있는 객체이다.
javax.servlet.error.request_uri
        문제를 일으킨 리소스의 URI를 말해주는 스트링이다.

javax.servlet.error.servlet_name

 

Throwable e = (Throwable)request.getAttribute("javax.servlet.error.exception");
Throwable e1 = (Throwable)request.getAttribute("javax.servlet.jsp.jspException");

 

오류 페이지에서만 쓸 수 있는 객체 : exception

<%@ page isErrorPage="true" %>
${pageContext.exception}


오류 발생 후 오류 페이지로 이동하지 않고
자체 페이지에서 해결하기 : <c:catch>

<c:catch>
   <% int x = 10/0; %>
   // 에러가 발생하면 다음을 실행하지 않고 </c:catch>로 곧장 이동한다.
</c:catch>


exception을 속성으로 만들어 에러 메시지 읽기

<c:catch var="myException">
   ...
</c:catch>
${myException.message}
// 타입이 Throwable이니 message프로퍼티가 있음



반응형