Java2EE Framework/Spring 2.0

스프링2.0 Exception 관리 방법

본클라쓰 2010. 6. 7. 09:05

 프로그램 수행 중 Exception이 발생하면 서블릿 컨테이너가 제공하는 에러 화면에 웹 브라우저에 출력되는데, 만약 예외에 따라 알맞은 에러 화면을 출력하고 싶다면 컨트롤러에 HandlerExceptionResolver 를 사용하면 된다. 스프링 컨트롤러인 DispatcherServlet 클래스는 HandlerExceptionResovler 가 등록되어 있는 경우, 예외 처리를 HandlerExceptionResolver에게 맡긴다.

 

 SimpleMappingExceptionResolver 클래스는 HandlerExceptionResolver 인터페이스를 구현하고 있으며, 스프링은 현재 SimpleMappingExceptionResolver 클래스만 제공하고 있다. 이 클래스를 사용하여 예외 타입에 따라 사용될 뷰를 지정하여 알맞은 에러 화면을 출력할 수 있다. 예외 타입과 뷰 이름 매핑은 ExceptionMappings 프로퍼티를 통해 설정한다.

 

DispatcherServler 설정파일에 다음과 같이 Exception 을 등록한다.  

 

<!-- ExceptionResolver registro --> 
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="exceptionMappings">
        <props>
            <prop key="net.guru.web.common.DefaultException">error/error</prop>
            <prop key="org.springframework.dao.DataAccessException">dataAccessFailure</prop>
            <prop key="org.springframework.transaction.TransactionException">dataAccessFailure</prop>
       </props>
    </property>
</bean>

 

 <prop key="net.guru.web.common.DefaultException">error/error</prop> 와 같이 Exception 페이지를 지정할 수 있다. Exception 클래스를 다음과 같이 작성한다.

 

package net.guru.web.common;

 

@SuppressWarnings("serial")
public class DefaultException extends RuntimeException {

    do someting ... 

}

 

 발생한 예외는 HttpServletRequest의 exception 속성에 저장된다. 따라서 jsp 페이지 등에서 ${exception.message} 나 request.getAttribute("exception") 등으로 사용 가능하다.