티스토리 뷰

Interceptor란 컨트롤러에 들어오는 요청 가로채는 역할

 

컨트롤러에 들어오는 요청을 가로채서 컨트롤러 실행전 이 회원이 로그인을 하였는지 

권한은 있는지 등등을 체크하기 위해 주로 사용한다.

 

1. dispatcher-servlet.xml 에서 interceptor 부분 bean을 등록한다.

dispatcher-servlet.xml 파일을 열어서 다음 항목을 추가한다.

1
2
3
4
5
6
7
8
9
10
11
12
    <!-- 인터셉터 -->
        <property name="interceptors">
            <list>
                <ref bean="authenticInterceptor" />
                <ref bean="webLogInterceptor"/>
            </list>
        </property>
    </bean>
 
    <bean id="authenticInterceptor" class="com.test.common.AuthenticInterceptor"/>
    <bean id="webLogInterceptor" class="com.test.common.WebLogInterceptor" />
 
 

2개의 interceptor를 추가할 예정인데.

1. authenticInterceptor : 권한, 세션체크 부분로직이 들어갈 인터셉터이다.

2. webLogInterceptor : 단순 log를 쌓기 위한 인터셉터이다.

 

class="" 부분에 패키지명.클래스명 입력을 해준다.

 

 

서블릿 설정을 완료 하였으면 다음엔 클래스 파일을 생성하면됩니다.

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
31
32
33
34
35
36
37
 
 
 
/**
* @author lso
 * @version 1.0.0
* @since 2020-01-22 오전 10:59
 * @param
 * @return
 * <pre>
 * Comments : 권한 인터셉터
 * <pre>
 */
public class AuthenticInterceptor extends HandlerInterceptorAdapter {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle >>>  Controller 실행 전 실행");
        return true;
    }
 
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modeAndView) throws Exception {
        System.out.println("postHandle >>>  Controller 실행 후 실행");
    }
 
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex){
        System.out.println("afterCompletion >>>  preHandle 메소드 return값이 true일 때 실행");
    }
 
}
 
 
 

 

여기서 주목할점은 

메소드가 3개가 있는데 preHandle, postHandle, afterCompletion이렇게3개가있습니다.

각각 소스에 적혀있듯이 실행되는 순서가 다릅니다.

 

메소드 실행순서는 다음과 같다.

filter -> preHandle -> controller -> postHandle -> afterCompletion 

 

filter는 다음에 공부해보도록 한다. 

 

위와같이 세팅을 후 실행을 하면 

위 사진과 같이 메소드 실행순서에 맞춰 동작하는걸 확인 할 수 있다.

 

preHandle 부분에 세션체크나 권한체크 등 컨트롤러 동작 전 확인하는 소스를 넣으면 된다.

 

아 추가로 webLogInterceptor 도 마찬가지로 3가지 메소드를 사용하시면 됩니다.

이부분엔 로그쌓는 로직 이 들어가면 되겠네요. ^^

 

이상 끝

 

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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 31
글 보관함