본문으로 바로가기

[Spring] 인터셉터 ( Inerceptor )

category Back-end/Spring 2016. 4. 15. 09:41

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