반응형
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());
}
반응형