본문 바로가기

프로그램

[SPRING]INTERCEPTOR 생성 및 셋팅

반응형

SPRING INTERCEPTOR 셋팅

 

스프링에 INTERCEPTOR 셋팅 공부해보자.

 

  • INTERCEPTOR CLASS 생성

 com.lskworld.app.common.interceptor package 생성 후

LoginInterceptor class를 만들었다.

그리고 extends HandlerInterceptorAdapter 를 했다.

 

Interceptor 생성 시 사용할 수 있는 class

HandlerInterceptorAdapter

HandlerInterceptor => interface

 

 

Login 시 세션여부만 체크함

 

HandlerInterceptorAdapterpreHandle postHandle 를 재정의함

     @Override

     public boolean preHandle(HttpServletRequest request,

                HttpServletResponse response, Object handler) throws Exception {

           // TODO Auto-generated method stub

           logger.debug("LoginInterceptor.preHandle process");

          

           HttpSession session = request.getSession();

          

           if(session.getAttribute("userId") == null) {

                response.sendRedirect("login");

                return false;

           } else {

                return super.preHandle(request, response, handler);

           }

//         return super.preHandle(request, response, handler);

     }

    

     @Override

     public void postHandle(HttpServletRequest request,

                HttpServletResponse response, Object handler,

                ModelAndView modelAndView) throws Exception {

           // TODO Auto-generated method stub

           logger.debug("LoginInterceptor.postHandle process");

          

           super.postHandle(request, response, handler, modelAndView);

     }

 

Xml 에 셋팅

Spring이 어렵다고 생각하는 점중에 하나는 xml 셋팅에 있음ㅠ_ㅠ

 

다음 url를 참조하였는데 bean 방식은 잘 안되어서 결국 mvc:interceptors 방식을 사용하였다.

http://blog.whitelife.co.kr/entry/Spring-Interceptor-%EC%A0%81%EC%9A%A9-%ED%95%98%EA%B8%B0

 

안된 이유는 beanproperty 에 넣는 방식을 사용할 경우 mapping핸들러마다 정의를해줘야하는데 annotation-driven 처리를 하여 자동으로 mapping 핸들러가 정해지면서 몬가 잘 안되는거 같다.

 

<interceptors>

        <interceptor>

            <mapping path="/common/login/loginTest02"></mapping>

            <beans:bean class="com.lskworld.app.common.interceptor.LoginInterceptor" name="loginInterceptor"></beans:bean>

        </interceptor>

    </interceptors>

 

/common/login/loginTest02 의 요청에서만 작동하도록 하였다.

 

그래서 그냥 mvc:interceptor 를 이용하여 처리함

 

참고url 

http://softline21c.blogspot.kr/2013/08/spring-32-spring-mvc-interceptor.html

http://blog.whitelife.co.kr/entry/Spring-Interceptor-%EC%A0%81%EC%9A%A9-%ED%95%98%EA%B8%B0