WEB 개발을 JAVA 로 하는 경우 SpringFramework 를 많이 사용 하고 있다.


※ 공식 사이트: http://spring.io/


가장 많이 사용하게 되고, 빠질 수 없는 DispatcherServlet 의 구조에 대해 알아보자



위 그림은 Spring MVC 의 전체 흐름도 이다. 중요하게 봐야 할 부분은 HandlerExceptionResolver 이다. 



  • HandlerExceptionResolver
    • DispatcherServlet 에 셋팅을 했을 경우 모든 Exception 을 위임 받아 해당 페이지로 이동 한다.

dispatcher-servlet.xml (Spring 2.5 기준)
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="order" value="1" />
    <property name="exceptionMappings">
        <props>
            <prop key="Exception">error</prop>
        </props>
    </property>
</bean>

HandlerExceptionResolver 에 해당되는 Class 이다. 위에서 설명 한대로 exceptionMappings 에 예외 Class와, 이동할 Page를 설정 한다.

Annotation 지원은 Spring 3.0 이상 부터 된다고 한다. 


SampleController.java

@RequestMapping(value="sample", method=RequestMethod.GET)
public ModelAndView sample(String sample) throws Exception {
    
    ModelAndView mav = new ModelAndView("sample");
    
    try {
        
        // ... logic
        
        return mav;
    } catch(Exception e) {
        e.printStackTrace();
        throw e;
    } 
}

Exception 모두 던질 경우 trace를 할 수 없기 때문에 중요한 부분은 위와 같이 trace 를 하는 부분이 좋다고 생각 한다.


dispatcher-servlet 셋팅 후 아래와 같이 예외를 위임 하는 경우 에러 페이지로 이동하는 것을 확인 할 수 있다.


※ 참고 사이트

  - https://code.google.com/p/developerhaus/wiki/SpringException

  - http://www.cnblogs.com/fangwenyu/archive/2012/10/11/2716665.html



+ Recent posts