스프링 MVC 조립 인터셉터

요청이 수신되면, 핸들러 맵핑 (모든 HandlerMapping)에 요청을 DispatcherServlet에, 당신은 요청에 HandlerExecutionChain을 객체를 찾아야한다. 모든 HandlerMapping을 설명하기 전에,이 HandlerExecutionChain을 객체에 대해 알 필요가있다.

제안 HandlerExecutionChain을 이름 실행의 체인, 요청 인터셉터 (의 HandlerInterceptor) 인터셉트 동시에 복수를 포함하는 프로세서 (핸들러) 프로세스를 포함하는 요청. 복귀를 HandlerExecutionChain을 모든 HandlerMapping 때 DispatcherServlet은 프로세서 HandlerExecutionChain을 요청에서 정의 인터셉터 함께 처리된다.

HandlerExecutionChain을 실행이 체인의 ModelAndView 아래와 같은 구조 요청을 처리하고 처리를 복귀 할 책임이있다. 전과 요청 핸들러를 실행 한 후, 체인 Handlerlnterceptor 예 차단을 조립한다.

결국 인터셉터는 무엇을 할까? 우리는 요격을 검토하기 위해 여러 인터페이스 방법을 통해 이해합니다.
1) 부울 preHandle (HttpServletRequest의 요청 HttpServletResponse를 응답하여, 대상물 핸들러) 요청 핸들러에 도달하기 전에 사전 처리 방법을 수행한다. 이 방법은 false를 반환하는 경우, 요청이 그 체인의 다음 인터셉터 송신 아니지만, 프로세서에서 핸들러 사슬 말단에 전달되지 않고, 직접적으로 반환한다. 만 요청은 다음 프로세싱 체인 노드에 전달, true를 돌려줍니다.

2) 공극 postHandle (HttpServletRequest의 요청에 응답하고 HttpServletResponse 오브젝트 핸들러의 ModelAndView의 ModelAndView) 요청 HandlerAdapter를 실행 한 후, 후 처리를 수행하는 방법.

3) 무효 afterCompletion (HttpServletRequest의 요청에 응답 HttpServletResponse를, 대상물 핸들러 예외 예) : 응답 렌더링 한 후, 상기 방법은 수행된다.

프로세서에서, 아답터 인터페이스는 균일 한 처리 핸들러의 호출에 따른 어댑터에 의해 캡슐화 DispatcherServlet에 대한 핸들러 HandlerAdapter, 체인 단부 처리기에있다.

< MVC : 인터셉터 > 
    < MVC : 인터셉터 > 
        < 매핑 경로 = "/ 보안 / *" > 
        < 클래스 = "com.smart.web.MyInterceptor" /> 
    </ MVC : 인터셉터 > 
</ MVC : 인터셉터 >

스마트 인터셉터 servlet.xml에 복수로 배치 될 수 있고, 각 인터셉터 인터셉터의 범위를 한정하는 경로 맵 매칭을 지정할 수있다.

추천

출처www.cnblogs.com/jwen1994/p/11210901.html