[projectName]-servlet.xml 파일에 추가 하도록 하자.


Resolve 1.  모든 요청에 따른 Interceptor 적용


<!-- Interceptor -->

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">

<property name="interceptors">

<list>

<ref bean="kr.co.whitelife.WhitelifeInterceptor"/>

<ref bean="kr.co.whitelife.BlacklifeInterceptor"/>

</list>

</property>

</bean>



모든 요청에 대한 응답을 해주는 DefaultAnnotationHandlerMapping을 이용 한다. 다 수의 Interceptor를 순차적으로 적용이 가능하다.


Resolve 2.  일부 요청에 따른 Interceptor 적용


<!-- Interceptor -->

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

<property name="mappings">

<props>

<prop key="/test">WhitelifeController</prop>

</props>

</property>

<property name="interceptors">

<ref bean="WhitelifeInterceptor"/>

</property>

</bean>



RequestUri에 따른 Controller 분기가 가능한 SimpleUrlHandlerMapping을 이용 했다. Resolve 1 방법과 같은 방법으로 Interceptor을 적용이 가능하다.


Resolve 3.  mvc 태그를 이용 하는 방법


<mvc:interceptors>

<bean class="kr.co.whitelife.WhitelifeInterceptor"/>

<bean class="kr.co.whitelife.Blacklifenterceptor"/>

<mvc:interceptor>

<mvc:mapping path="/test/*"/>

<bean class="kr.co.whitelife.WhitelifeInterceptor"/>

</mvc:interceptor>

</mvc:interceptors>



Spring 3.x 버전 이후로는 mvc 전용 태그를 지원 한다. 2~3번째 줄에 있는 부분은 Resolve 1 방법, 4~7번째 줄에 있는 부분은 Resolve 2 방법과 같다. 


Interceptor Class Sample


/**

 * Sample Interceptor

 * @author whitelife

 * @since 2013-01-31

 */

@Controller("TestInterceptor")

public class TestInterceptor extends HandlerInterceptorAdapter {


@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

System.out.println("TestInterceptor{preHandle}............................................ start");

return true;

}


@Override

public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

System.out.println("TestInterceptor{postHandle}............................................ end");

}

}




Interceptor도 Controller과 마찬가지로 RequestUri에 따라 분기를 하기 때문에 Controller과 같은 동작을 한다. @Controller도 적용이 가능하다.




+ Recent posts