반응형
Interceptor
- interceptor를 통해 뷰의 공통적인 부분을 묶을 수 있다. 이를 통해 사용자 세션, 쿠키를 확인하거나 로그를 남기는 등 여러 작업을 할 수 있다.
interface CookieValidator { void checkUser(email);}컨트롤러에서 이 인터페이스를 상속받아 사용하면 된다.
인터셉터 작성
xpublic class AuthorizationInterceptor extends HandlerInterceptorAdapter { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String email = getEmailInCookie(request.getCookies()); HandlerMethod method = (HandlerMethod)handler; if (method.getBean() instanceof ViewController) { ViewController vc = (ViewController)method.getBean(); vc.setUserEmail(email); } return true; } private String getEmailInCookie(Cookie[] cookies) { if (cookies == null) { return null; } for (Cookie cookie : cookies) { if ("email".equals(cookie.getName())) { return cookie.getValue(); } } return null; }}preHandle메소드를 통해 컨트롤러 처리 이전의 작업을 수행한다. 여기서 이전에 작성한 인터페이스를 수행시킨다.
인터셉터 등록
인터셉터를 config에 등록해야한다. 자바 MVC Config 클래스에 다음을 오버라이드 하면 된다.
x
public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new AuthorizationInterceptor()); }
반응형