1.拦截器作用
SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自己定义一些拦截器来实现特定的功能。
2.自定义拦截器
想要自定义拦截器,必须实现 HandlerInterceptor
接口。
1 package com.springmvc.aftercom; 2 3 import javax.servlet.http.HttpServletRequest; 4 import javax.servlet.http.HttpServletResponse; 5 6 import org.springframework.web.servlet.HandlerInterceptor; 7 import org.springframework.web.servlet.ModelAndView; 8 9 /** 10 * springmvc拦截器 11 * @author Administrator 12 * 13 */ 14 public class MyInterceptor implements HandlerInterceptor{ 15 16 @Override 17 public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) 18 throws Exception { 19 System.out.println("afterCompletion方法在控制器的处理请求方法执行完成后执行,即视图渲染结束之后执行"); 20 } 21 22 @Override 23 public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) 24 throws Exception { 25 System.out.println("postHandle方法在控制器的处理请求方法调用之后,解析视图之前执行"); 26 } 27 28 @Override 29 public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception { 30 System.out.println("preHandle方法在控制器的处理请求方法调用之后,解析视图之前执行"); 31 return true; 32 } 33 34 35 }
3.在springmvc核心配置文件中配置拦截器
1 <!-- 配置拦截器 --> 2 <mvc:interceptors> 3 <mvc:interceptor> 4 <!-- 配置拦截器作用的路径 对某个模块拦截请求 /模块名/* --> 5 <mvc:mapping path="/**" /> 6 <!--拦截器方法--> 7 <bean class="com.springmvc.aftercom.MyInterceptor"></bean> 8 </mvc:interceptor> 9 </mvc:interceptors>