[Spring 3] Interceptor 적용하기
Intercept라는 영어단어에서 알수있듯이 무엇인가를 가로챈다는 의미를 가지고 있다.
우리가 사용하는 Controller 호출 전/후에 동작하는 방식으로서 가장 쉽게 예를들수 있는 부분으로는 로그인 체크 등이 있겠다.
A라는 페이지가 로그인한 사용자만 접속 할 수 있다라고 가정하면 사용자로부터 A라는 페이지가 호출될시, 이때 로그인 여부를 확인하는 것을 인터셉터로 구성이 가능하다.
Spring Interceptor는 메소드에 따라 실행되는 시점이 다른데, 아래와 같이 3개의 메소드를 이용할 수 있다.
preHandle()
-- Controller 호출 전에 실행
postHanle()
-- Controller 호출 후 View를 내보내기 직전에 실행
afterCompletion()
-- Controller 호출 후 View까지 내보내고 난 뒤에 실행
다음은 Interceptor 간단한 사용방법 이다.
1. servelt 설정 파일
<mvc:interceptors>
|
* 디렉토리 전체 또는 접속 URL 별로 인터셉터를 적용할 수 있다.
2. Interceptor 구성
package kr.co.test.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; public class TestInterceptor extends HandlerInterceptorAdapter { /** * 로그인 체크 Interceptor */ @Override public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object handler) throws Exception { boolean result = false ; HttpSession session = req.getSession() ; // 회원 ID String id = (String)session.getAttribute("id") ; if("".equals(id) && "".equals(id)){ res.sendRedirect("/login/test.do") ; result = false ; }else{ result = true ; } return result ; } }