출처: http://november11tech.tistory.com/88 [Mr.november11] 인터셉터 :: 사월은 봄이다.

인터셉터( Interceptor )




인터셉터는 중간에서 뭔가 가로채버린다는 뜻이다.


서블릿에서 필터랑 비슷한 것이다.




클라이언트가 서블릿(controller)에 요청을 할 때, 컨트롤러가 뷰에 뭔가를 전달하고 뷰에서 클라이언트에 응답할 때 발생한다.


(인터셉터는 DispatcherServlet이 컨트롤러를 호출하기 전, 후에 요청과 응답을 가로채서 가공하게 하는 것)




정확한 명칭은 핸들러 인터셉터( Handler Interceptor) 라고 함






인터셉터는 HandlerInterceptorAdapter를 상속받아 쓴다(extends)




이때 전처리기랑 후처리기가 있는데 전처리기가 요청할 때, 후처리기가 응답할 때 쓰는거다.




preHandle의 경우 컨트롤러가 호출되기 전에 실행, postHandle는 컨트롤러가 실행되고 난 후에 실행 함






---------------------




이놈은 web.xml 에서 써 준 설정 파일 *-servlet.xml 에 넣어준다.


(뷰리졸버등이 설정 되어 있는.. )




    <mvc:interceptors>


        <mvc:interceptor>


            <mvc:mapping path="/**"/>   // 모든 클래스를 감시한다는 뜻


            <bean  class="com.go.cooper.common.logger.CooperInterceptor"></bean> // 인터페이스가 구현된 클래스


        </mvc:interceptor>


    </mvc:interceptors>






-------------------


package com.go.cooper.common.logger;




import javax.servlet.http.HttpServletRequest;


import javax.servlet.http.HttpServletResponse;




import org.apache.commons.logging.Log;


import org.apache.commons.logging.LogFactory;


import org.springframework.web.servlet.ModelAndView;


import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;




public class CooperInterceptor extends HandlerInterceptorAdapter{


 


 protected Log logger = LogFactory.getLog(CooperInterceptor.class);


  @Override


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


         if (logger.isDebugEnabled()) {


          logger.debug("======================================          START         ======================================");


          logger.debug(" Request URI \t:  " + request.getRequestURI());


         }


         System.out.println("dfd");


         logger.info("pre");


         return super.preHandle(request, response, handler);


     }


      


     @Override


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


         if (logger.isDebugEnabled()) {


          logger.debug("======================================           END          ======================================\n");


         }


         logger.info("post");


         System.out.println("dfd--");


     }


     


}


'개발 > Spring' 카테고리의 다른 글

datasource의 value 읽어오기  (0) 2018.02.15
log4j.xml 설정  (0) 2018.02.15
톰캣에서 get 방식 한글 깨짐 문제  (0) 2018.02.15
modelandview redirect  (0) 2018.02.15
quartz  (0) 2018.02.15

+ Recent posts