首页 > 编程知识 正文

过滤器拦截器监听器的区别,过滤器监听器拦截器

时间:2023-05-06 12:03:10 阅读:173513 作者:1420

两者的区分过滤基于servlet容器,应用场景是为了过滤字符编码、跨域等问题,实现Filter接口拦截器是通过SpringMVC实现的Java反射(Java 拦截器的实现是一个HandlerInterceptor接口,创建实现接口的preHandle、Posttor接口后,通过配置类设置拦截器此外,还有可以从addPathPatterns和excludePathPatterns执行的请求,以及不需要阻止的请求。 相同点: 1、拦截器和滤波器都体现了AOP的思想,可以对方法实现强化,拦截请求方法。 2、拦截器和过滤器都可以通过Order注释设定执行顺序的不同点。 1、过滤器在servlet级别,拦截器在Spring级别的Filter在javax.servlet包中定义,依赖于网络容器,因此只能用于web项目。 拦截器用SpringMVC实现,归根到底拦截器是Spring组件,由Spring容器管理。 2、滤波器和拦截器的执行顺序不同。 实现先执行滤波器再执行拦截器使用的HandlerInterceptor接口,实现接口的preHandle、postHandle和afterCompletion方法。 2 .通过在配置类中设置拦截器,可以在addPathPatterns和excludePathPatterns中执行的请求以及不需要阻止的请求。

代码

//第一步package com.interceptor.demo.config; importorg.spring framework.web.servlet.handler interceptor; importorg.spring framework.web.servlet.modelandview; import javax.servlet.http.http servlet request; import javax.servlet.http.http无servlet轮询; /**自定义拦截器可以实现HandlerInterceptor接口或继承HandlerInterceptorAdapter类。 *也可以重新编写三种方法,当然只实现一种最重要的预处理方法。 * preHandle方法:此方法在进入控制器之前执行,以返回布尔值并确定是否执行后续操作。 * postHandle方法:此方法在controller运行后执行,但视图尚未解析,可以将数据添加到ModelAndView中。 (前后没有分离)。 * afterCompletion方法:此方法在整个请求结束后执行,以获取响应数据和异常信息。 请求已终止,但不会将结果返回给客户端。 */publicclassmyinterceptorimplementshandlerinterceptor { @ overridepublicbooleanprehandle (httpservletrequestrequest,htttp object handler ((system.out.println ) )“进入窃听器”//中途写逻辑代码,例如判断是否成功登录,失败后返回false return true @ overridepublicvoidposthandle (httpservletrequestrequest,HttpServletResponse response,Object handler, modelandview modeler } @ overridepublicvoidaftercompletion (httpservletrequestrequest,HttpServletResponse response,object hact }//步骤2 package com.interceptor.demo.config; importorg.spring framework.context.annotation.configuration; importorg.spring framework.web.servlet.config.annotation.interceptor registry; importorg.spring framework.web.servlet.config.annotation.webmvcconfigurer; @ configurationpublicclassinterceptorconfigimplementswebmvcconfigurer { @ overridepublicvoidaddinterceptors (intercerceptoreptoreregisioral ) wmyinterceptor ) )、addpathpatterns ) )/** ) ) /阻塞所有路径. excludepathpatterns )/log }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。