一、拦截器:Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必 须实现HandlerInterceptor接口
二、实现步骤:
1.自定义实现类实现HandlerInterceptor接口
2.在springMVC中配置文件中的配置相应的拦截器
实现的代码:
1.自定义实现类
package com.neuedu.springmvc.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; /* * 项目名称:springmvc-03 * @author:wzc * @date 创建时间:2017年8月24日 上午10:37:35 * @Description:自定义拦截器 * @parameter * */ public class interceptor implements HandlerInterceptor{ @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { System.out.println("afterCompletion"); } @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { System.out.println("postHandle"); } @Override public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception { System.out.println("preHandle"); return true; } }
2.在springMVC中配置文件中的配置相应的拦截器
<!-- 配置拦截器 --> <mvc:interceptors> <!-- 配置自定义拦截器全类名 --> <bean class="com.neuedu.springmvc.interceptor.interceptor"></bean> </mvc:interceptors>
三、拦截器工作原理
四、拦截器中的三种方法:
– preHandle():该方法在目标方法之前被调用,
若返回值为true,则继续调用后续的拦截器和目标方法
若返回值为false,则不会再调用后续的拦截器和目标方法
可以考虑做权限,日志或者事务等!
– postHandle():调用目标方法之后,但渲染视图之前被调用
可以对请求域中的属性或者视图做出修改!
– afterCompletion():渲染视图之后被调用,
可以在该方法中进行一些资源清理的操作。
五/多拦截器的实现
可以自定义多个拦截器实现类,然后只需要在SpringMVC-xml文件中进行配置就行
<!-- 配置拦截器 --> <mvc:interceptors> <!-- 配置自定义拦截器全类名 --> <bean class="com.neuedu.springmvc.interceptor.interceptor"></bean> <!-- 增加拦截器配置 --> <mvc:interceptor > <!-- 可以配置拦截的请求路径 --> <mvc:mapping path="/testJson"/> <!-- 配置自定义拦截器全类名 --> <bean class="com.neuedu.springmvc.interceptor.SecondInterceptor"> </bean> </mvc:interceptor> </mvc:interceptors>