HandlerInterceptorAdapter一般用于:用户是否登录,权限设置,日志记录等。
该类有三个方法。
preHandle,postHandle,afterCompletion
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
return true;
}
public void postHandle(
HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
throws Exception {
}
public void afterCompletion(
HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
}
afterCompletion 可以根据ex是否为null判断是否发生了异常,进行日志记录。
1.如果基于xml配置使用Spring MVC,
可以利用SimpleUrlHandlerMapping、BeanNameUrlHandlerMapping进行Url映射(相当于struts的path映射)和拦截请求(注入interceptors),
2.如果基于注解使用Spring MVC,可以使用DefaultAnnotationHandlerMapping注入interceptors。
eg:<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
注意无论基于xml还是基于注解,HandlerMapping bean都是需要在xml中配置的。
其中参数handler可以获取到method并通过method获取方法的注解。
eg:
HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod();
/* 获得注入内容 */
Token annotation = method.getAnnotation(Token.class);