프로그램 수행 중 Exception이 발생하면 서블릿 컨테이너가 제공하는 에러 화면에 웹 브라우저에 출력되는데, 만약 예외에 따라 알맞은 에러 화면을 출력하고 싶다면 컨트롤러에 HandlerExceptionResolver 를 사용하면 된다. 스프링 컨트롤러인 DispatcherServlet 클래스는 HandlerExceptionResovler 가 등록되어 있는 경우, 예외 처리를 HandlerExceptionResolver에게 맡긴다.
SimpleMappingExceptionResolver 클래스는 HandlerExceptionResolver 인터페이스를 구현하고 있으며, 스프링은 현재 SimpleMappingExceptionResolver 클래스만 제공하고 있다. 이 클래스를 사용하여 예외 타입에 따라 사용될 뷰를 지정하여 알맞은 에러 화면을 출력할 수 있다. 예외 타입과 뷰 이름 매핑은 ExceptionMappings 프로퍼티를 통해 설정한다.
DispatcherServler 설정파일에 다음과 같이 Exception 을 등록한다.
<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") 등으로 사용 가능하다.
'Java2EE Framework > Spring 2.0' 카테고리의 다른 글
스프링 2.0 - 다중 데이터소스 사용하기 (0) | 2010.06.07 |
---|---|
스프링 2.0의 트랜잭션 처리 방법 (0) | 2010.06.07 |
스프링2.0 - DataSource 사용하기 (0) | 2010.06.06 |
스프링2.0 - 별도의 xml 파일에서 뷰 빈즈 선언하기 (0) | 2010.06.05 |
스프링 MVC - 요청URL과 컨트롤러를 매핑시키는 방법(기타) (0) | 2010.06.05 |