介绍
小编给大家分享一下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中过滤器和拦截器如何实现