拦截器
1.什么是拦截器?作用?
对于SpringMVC来说,拦截器的主要工作就是拦截用户的请求,拦截下来之后,常见的操作比如进行登陆验证,登陆系统之后,系统获取到你的请求,然后可以分析用户权限。
2.如何使用拦截器?
主要相关类和方法:HandlerExeCutionChain 该类主要由handler和handler interceptors组成,HandlerMapping类通过getHandler方法会调用到该类。
SpringMVC 对于一个请求可以添加多个拦截器,而这些拦截器集合中会链式调用这些拦截器,每个拦截器会顺序调用固定的方法,而这些方法定义在HandlerInterceptor中,
这是拦截器的一个基础接口,里面有三个方法
boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception;
使用时机:在处理请求之前
应用场景:可以在该方法放入一些初始化操作,比如权限验证,日志管理等,
注意:该方法返回的是一个boolean类型,如果为true,则会调用后面的拦截器和目标方法,如果为false则不会调用。
void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)throws Exception;
使用时机:在调用了目标方法之后,准确来说是在调用了controller中定义的方法之后,但是在dispatcherservlet返回视图view之前。
应用场景:根据使用的时机就知道,该拦截器可以对controller中的modelAndView对象进行操作。
1 <mvc:interceptors> 2 <bean class="com.jackie.springmvc.interceptors.FirstInterceptor"></bean> 3 <!-- 配置拦截器(不)作用的路径 --> 4 <mvc:interceptor> 5 <mvc:mapping path="/emps"/> 6 <bean class="com.jackie.springmvc.interceptors.SecondInterceptor"></bean> 7 </mvc:interceptor> 8 </mvc:interceptors>