Inerceptor
필터와 차이점을 알아보자
필터는 2부분에 사용
1. 요청 전
2. 요청 후
인터셉터는 3부분에 사용
1. 컨트롤러 (핸들러) 실행전 (preHandle)
2. 컨트롤러 (핸들러) 실행 직후, 아직 뷰를 실행하기 전 (postHandler)
3. 뷰를 실행한 이후, 브라우저 응답되기 직전 (afterCompletion)
필터와 인터셉터는 처리시점에서 차이가 있다.
위는 필터의 작동 방법이다.
아래는 인터셉터가 있을 때 처리 방법이다.
TestInterceptor.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | package com.ktds.jgbaek.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; public class TestInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("컨트롤러를 실행하기 직전..."); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("컨트롤러를 실행한 이후....."); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("브라우저에게 응답되기 직전...."); } } | cs |
applicationContext.xml
1 2 3 4 5 6 7 | <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean id="testInterceptor" class="com.ktds.jgbaek.interceptor.TestInterceptor" /> </mvc:interceptor> </mvc:interceptors> | cs |
모든 url을 거치도록 mapping해 주었다.
결과창:
이제 필터대신에 인터셉터를 사용한다.
일반적인 용도는 필터를 사용, 스프링 로직을 사용해야 된다면 인터셉터를 사용한다.
xss 와 같은 해킹을 막을 때는 필터를 사용한다고 한다.
'Back-end > Spring' 카테고리의 다른 글
[Spring] Controller Biz 사용하기 (0) | 2016.04.18 |
---|---|
[Spring] Controller 리턴타입 (0) | 2016.04.15 |
[Spring] ExceptionHandler (0) | 2016.04.14 |
[Spring] Error page 만들기 (0) | 2016.04.14 |
[Spring] 새로운 프로젝트 생성하기 (0) | 2016.04.12 |