SPRING INTERCEPTOR 셋팅
스프링에 INTERCEPTOR 셋팅 공부해보자.
- INTERCEPTOR CLASS 생성
com.lskworld.app.common.interceptor package 생성 후
LoginInterceptor class를 만들었다.
그리고 extends 로 HandlerInterceptorAdapter 를 했다.
Interceptor 생성 시 사용할 수 있는 class
HandlerInterceptorAdapter
HandlerInterceptor => interface
Login 시 세션여부만 체크함
HandlerInterceptorAdapter의 preHandle 과 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
안된 이유는 bean의 property 에 넣는 방식을 사용할 경우 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