装配与自定义拦截器
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理,通常还有如下作用:
- 日志记录
- 权限检查
- 性能监控
- 通用行为
实现
SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor 来实现的:
- 定义的Interceptor类要实现了Spring 的HandlerInterceptor 接口
- 定义的Interceptor类继承实现了HandlerInterceptor 接口的类(比如 HandlerInterceptorAdapter 类)
HandlerInterceptor 有三个方法:
preHandle (HttpServletRequest request, HttpServletResponse response, Object handle),在请求处理之前进行调用。
postHandle (HttpServletRequest request, HttpServletResponse response, Object handle, ModelAndView modelAndView),请求进行处理之后调用。
afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handle, Exception ex) ,整个请求结束之后(渲染了对应的视图之后)调用。
配置文件如下设置:
异常处理
- 使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver
- 实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器
- 使用@ExceptionHandler注解实现异常处理
简单的异常处理,推荐使用SimpleMappingExceptionResolver即可:
配置文件中如下设置:
实现自己的HandlerExceptionResolver, 第4个参数表示对哪种类型异常进行处理
使用@ExceptionHandler注解实现异常处理:
增加BaseController类,并在类中使用@ExceptionHandler注解声明异常处理
使所有需要异常处理的Controller都继承该类