낭만 프로그래머

Spring 에서 Interceptor 를 이용한 Session 처리 본문

Java/Spring

Spring 에서 Interceptor 를 이용한 Session 처리

조영래 2018. 6. 5. 17:45

1. Spring Interceptor 란?

필터와 유사한 개념으로 DispatcherServlet 이 Controller를 호출하기 전,후에 발생하는 이벤트다.

Interceptor 역시 필터와 마찬가지로 우선순위에 의하여 체이닝 된다

필터와 다른 점은 Request, Response 뿐만 아니라 여러가지 상황에서 처리가 가능 하며 Interceptor 역시 Bean이므로 다른 Bean을 DI 처리가 가능하다


2. 구현 방법

- HandlerInterceptorAdapter를 상속 받아서 preHandle(), postHandle(), afterCompletion() 중에 필요한 메소드를 Override하면 된다

preHandle() : controller가 수행하기 전

postHandle() : controller가 수행된 후 View를 호출하기 전

afterCompletion() : View 호출 완료 후


- servlet-context.xml 에 설정 추가

<mvc:interceptors>
    <bean class="net.miyam.IpObtainInterceptor" />  <!-- 첫번째 Interceptor / Interceptor Bean -->
    <mvc:interceptor>                                                                            <!-- 두번째 Interceptor -->
        <mvc:mapping path="/**/*.do" />                                                    <!-- Interceptor를 적용할 패턴 -->
        <mvc:exclude-mapping path="/uat/uia/**" />                                     <!-- Interceptor에 예외를 적용 할 패턴 -->
        <mvc:exclude-mapping path="/sec/ram/accessDenied.do" />
        <mvc:exclude-mapping path="/index.do" />
        <bean class="net.miyam.AuthenticInterceptor" />    <!-- Interceptor Bean -->
    </mvc:interceptor>
</mvc:interceptors>


- AuthenticInterceptor.java 구현

public class AuthenticInterceptor extends HandlerInterceptorAdapter {

@Resource(name = "LoginService")
private LoginService loginService;

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

LoginVO loginVO = (LoginVO) loginService.getAuthenticatedUser();

if(loginVO != null){
                        return true;
                }
                else {
                        ModelAndView modelAndView = new ModelAndView("forward:/accessDenied.do");
                        throw new ModelAndViewDefiningException(modelAndView);
                }
}
}


참조 : http://lionbonggu.tistory.com/12