拦截器与过滤器

  • 过滤器与拦截器的区别

    1. 过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术。 2. 拦截器是SpringMVC框架独有的。
    2. 过滤器配置了/*,可以拦截任何资源。
    3. 拦截器只会对控制器中的方法进行拦截。

自定义拦截器

  1. 实现接口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`:最后执行,前端响应后执行,可用于释放资源
  2. 在配置文件中配置拦截器

    <mvc:interceptors>
      <mvc:interceptor>
        <mvc:mapping path="/**"/> <!-- 要拦截的路径-->
        <!--            <mvc:exclude-mapping path=""/>  不拦截的路径-->
      </mvc:interceptor>
    <!--配置拦截器对象-->
      <bean class="com.oylong.interceptor.IInterceptor" />
    </mvc:interceptors>
    • /**表示所有的路径都拦截
Last modification:March 28, 2020
If you think my article is useful to you, please feel free to appreciate