본문 바로가기
Development/Web Develope

[Spring Framework] exclude-mapping.

by 버들도령 2019. 6. 14.
728x90

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);
  }

728x90

댓글