拦截器与过滤器
过滤器与拦截器的区别
- 过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术。 2. 拦截器是SpringMVC框架独有的。
- 过滤器配置了/*,可以拦截任何资源。
- 拦截器只会对控制器中的方法进行拦截。
自定义拦截器
实现接口
HandlerInterceptor
public class IInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return false; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
preHandle
:在Controller方法执行之前执行,返回true则放行,执行下一个拦截器,没有则进入Controller方法,返回false
则不放行postHandle
:后处理的方法,Controller方法之后执行- afterCompletion`:最后执行,前端响应后执行,可用于释放资源
在配置文件中配置拦截器
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <!-- 要拦截的路径--> <!-- <mvc:exclude-mapping path=""/> 不拦截的路径--> </mvc:interceptor> <!--配置拦截器对象--> <bean class="com.oylong.interceptor.IInterceptor" /> </mvc:interceptors>
/**
表示所有的路径都拦截