'jsp'에 해당되는 글 1건

  1. 2009.07.30 JSP에서의 에러처리
웹개발(JSP&Servlet)2009.07.30 14:42
JSP에서 에러처리를 처리하는 방법중 가장 간편한 방법은

1. page 지시자를 통해서 에러를 처리하는 페이지를 지정하는 방법이다.
page 지시자의 errorPage 속성을 통해서 에러를 처리할 페이지의 경로를 적는 방법이다.
<%@page errorPage="common/error.jsp"%>
페이지에서 컴파일 오류가 발생하거나 Exception이 발생하게 된다면 
common디렉토리의 error.jsp로 제어권이 넘어가 에러 관련 처리를 하고 페이지를 종료하게 된다.

error.jsp에서는 자신이 에러를 처리하기 위한 페이지임을 나타내야 하는데.
page 지시자의 isErrorPage속성을 "true"로 지정하면 에러처리페이지임을 나타낸다.
<%@page isErrorPage="true"%>

<%@page contentType="text/html" pageEncoding="EUC-KR"%>

<%@page isErrorPage="true"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
        <title>Error Handle JSP Page</title>
    </head>
    <body>
        <h1>에러를 처리하겠습니다 멉니까.</h1>
<%
   out.print( exception.getMessage() );
   out.print( "<BR>" );
   out.print( exception.toString() );
   out.print( "<BR>" );
   out.print( "<BR>" );
%>

</body></html>
에러 페이지에서 관련에러는 exception이라는 내장 객체를 통해서 정보를 얻을수 있다.

2. 배치기술서(Deploy Descriptor(DD), web.xml)를 사용하여 에러처리 페이지를 지정해 놓는다
DD에 에러의 종류와 그 에러를 처리할 수 있다.
첫번째 방법은 페이지가 응답하는 HTTP 오류 상태코드 별로 에러 처리 페이지를 지정하는 방법이고,
Client가 WAS에 요청을 하게되면 성공이든 실패이든 결과를 리턴하게 된다. 그 응답의 성공/실패와 그 종류를 
알수 있는 것이 HTTP 응답코드이다. 

가령 많이 만나게 되는 오류인 NullPointerException이 발생했을 경우 페이지의 응답은 실패가 되고
그 응답의 종류는 Internal Server Error라고 하여 HTTP응답 코드가 500이 된다.
이런 특정한 응답 코드에 대한 처리 페이지를 지정하고 싶다면 DD에 지정해 놓으면 된다.
<error-page>
<error-code>500</error-code>
<location>/error.do</location>
</error-page>
응답코드가 500일때는 /error.do 페이지에서 에러를 처리한다는 선언이다.

두번째 방법은 페이지에서 발생하는 Exception의 종류 별로 에러 처리 페이지를 지정하는 방법이다.
처리할 Exception과 처리할 페이지를 명시적으로 선언하여, Exception 발생시 지정 페이지에서 처리하는 방법이다.
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/nullpointer.do</location>
</error-page>
응답중 NullPointerException이 발생하면 /nullpinter.do 페이지에서 예외처리를 한다는 의미이다.
DD를 통하여 선언적으로 에러 종류와 처리 페이지를 지정해 놓으면 
page지시자에 설정된 에러페이지에서 에러를 처리하는 것보다. 보다 자세하고 명시적으로 에러처리를 할수 있다는 장점이 있다. 

두가지 선언중 우선권을 가지게 되는 에러처리 선언은 <exception-type>이다.  
가령 NullPointerException이 발생하여 500 응답을 하게 되었는데,
<error-page>
<error-code>500</error-code>
<location>/error.do</location>
</error-page>
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/nullpointer.do</location>
</error-page>

500과 NullPointerException의 에러 처리 페이지중 에러가 처리되는 페이지는 exception-type으로 선언한 /nullpointer.do이다. 



저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 영겁회귀

티스토리 툴바