[Spring Framework] exclude-mapping.
Interceptor에서 특정 URL 패턴을 갖는 경우에 제외하고자 할 경우는 어떤 식으로 처리할까?
Spring Framework. 3.1과 3.2의 버전마다 차이가 있는데.
Spring 3.2의 경우는 servlet-context.xml 파일에 다음과 같이 설정해주면 끝.
하지만 3.1의 경우는 exclude-mapping을 지원해주지 않으므로, Interceptor 클래스에서 별도의 처리를 거쳐주어야 한다.
<!-- Configures Handler Interceptors -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 전체 설정시 -->
<!--
<mvc:mapping path="/**" />
-->
<mvc:mapping path="/member/**/*.do"/>
<mvc:mapping path="/present/**/*.do"/>
<!-- Spring 3.2 부터는 아래의 옵션으로 Interceptor를 거치지 않도록 설정 가능 -->
<mvc:exclude-mapping path="/index.do"/>
<mvc:exclude-mapping path="/index.jsp"/>
<mvc:exclude-mapping path="/member/login.do"/>
<mvc:exclude-mapping path="/member/logout.do"/>
<beans:bean class="com.xxx.xxxx.login.LoginCheckInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
LoginCheckInterceptor 클래스의 preHandle(..) 메소드내에서 다음과 같은 처리를 해주도록 한다.
// Login Interceptor를 거치지 않도록 하기 위한 URL 주소 입력
ArrayList<String> excludeCheckUrl = new ArrayList<String>();
excludeCheckUrl.add("/index.do");
excludeCheckUrl.add("/index.jsp");
excludeCheckUrl.add("/member/login.do");
excludeCheckUrl.add("/member/logout.do");
if (-1 != excludeCheckUrl.indexOf(uriStr)) {
logger.debug("//---------------------------- Exclude Interceptor URL ----------------------------");
return super.preHandle(request, response, handler);
}