springboot中过滤器和拦截器如何实现

  介绍

小编给大家分享一下springboot中过滤器和拦截器如何实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

过滤器和拦截器二者都是AOP编程思想的提现,都能实现诸如权限检查,日志记录等。二者有一定的相似之处,不同的地方在于:

<李>

servlet过滤器是规范,只能用在Web程序中,而拦截器是春天规范,可以用在Web程序中,也可以用在应用程序中。

<李>

过滤器是servlet中定义的,依赖servlet容器。而拦截器在春天中定义,依赖春容器。

<李>

拦截器是一个弹簧组件,归弹簧管理,配置在春天的配置文件中,因此它可使用春天的任何资源,比如服务,数据源等,通过国际奥委会容器注入到拦截器即可,而滤波器则不行。

<李>

过滤器只在servlet前后起作用,而拦截器则能深入到方法前后,异常抛出前后。使用深度更大一些。

春天中实现过滤器过滤

方法1:使用springboot提供的FilterRegistrationBean注册自定义过滤器
公共类MyFilter实现滤波器{      @Override   FilterConfig FilterConfig公共空init()抛出ServletException {   System.out.println (“MyFilter init…“);   }      @Override   公共空间的doFilter (ServletRequest ServletRequest, ServletResponse ServletResponse, FilterChain FilterChain)抛出IOException, ServletException {//站点图标/标识。ico过滤器会执行2次   HttpServletRequest请求=(HttpServletRequest) servletRequest;   System.out.println (request.getRequestURI ());   System.out.println (“dofilter…“MyFilter);   filterChain.doFilter (servletRequest servletResponse);   }      @Override   公共空间摧毁(){      }   }

在springboot中注册过滤器

@ configuration   公开课FilterConfig {      @ bean   公共FilterRegistrationBean registrationBean () {   FilterRegistrationBean myfilter=new FilterRegistrationBean(新myfilter ());   myfilter.addUrlPatterns (“/*”);      返回myfilter;   }

到这里运行演示时会发现做过滤执行了2次,调试发现这是因为浏览器请求时站点图标管理,通过uri能发现,可以根据自己的需求用正则表达式适当控制。

方法2:servlet注解定义过滤器
@ component   @WebFilter (filterName=癿yFilter2" urlpattern=?*”)   公共类MyFilter2实现滤波器{   @Override   FilterConfig FilterConfig公共空init()抛出ServletException {   System.out.println (“myFilter2 init…“);   }      @Override   公共空间的doFilter (ServletRequest ServletRequest, ServletResponse ServletResponse, FilterChain FilterChain)抛出IOException, ServletException {   System.out.println (“dofilter…“myFilter2);   filterChain.doFilter (servletRequest servletResponse);   }      @Override   公共空间摧毁(){      }   }

 

以上是springboot中过滤器和拦截器如何实现的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

springboot中过滤器和拦截器如何实现