过滤器(Filter)是Servlet中常用的技术,可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,
常用的场景有登录校验、权限控制、敏感词过滤等,下面介绍下Spring Boot配置过滤器的方式

过滤器执行流程

客户端发起请求的时候,首先是经过了Filter过滤器,处理了request请求,然后去执行了我们的servlet/jsp,当执行完毕后,我们的response响应也经过了过滤器,这里经过过滤器的时候是从放行后面开始执行的,也就是处理了response响应。

过滤器的应用:字符编码转换,敏感词过滤、登陆权限验证、资源访问权限等;

拦截器与过滤器使用场景:(场景类似)

spring Web MVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。

1、日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等。

2、权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面;

3、性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如apache可以自动记录);

4、通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现。

过滤器和拦截器执行顺序

先执行过滤器,之后拦截器

一.创建自定义过滤器实现Filter接口

@Component
public class MyFilter implements Filter {//日志private Logger logger= LoggerFactory.getLogger(getClass());@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("MyFilter.init");}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {logger.info("过滤器---------start---------------");/*  if(request.getParameter("name").equals("张三")){//放行filterChain.doFilter(request,response);  //如果==张三,下面这段是放行的意思----反之不放行}*///走这个方法代表放行filterChain.doFilter(request,response);logger.info("过滤器---------end---------------");}@Overridepublic void destroy() {System.out.println("MyFilter.destroy");}
}
//走这个方法代表放行filterChain.doFilter(request,response);

二.注册过虑器

@Configuration
public class WebConfig  {@Beanpublic FilterRegistrationBean timeFilter() {FilterRegistrationBean registrationBean = new FilterRegistrationBean();MyFilter myFilter = new MyFilter();registrationBean.setFilter(myFilter);ArrayList<String> urls = new ArrayList<>();urls.add("/*");//配置过滤规则------------url-pattern 中配置了/*之后,可以对所有要访问的资源拦截registrationBean.setUrlPatterns(urls);return registrationBean;}
}

拦截器和过滤器区别

(1)拦截器是基于java的反射机制的,而过滤器是基于函数回调。

(2)拦截器不依赖于servlet容器,而过滤器依赖于servlet容器。

(3)拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

(4)拦截器可以访问action上下文、值栈里的对象,而过滤器不能。

(5)在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

两者的本质区别:从灵活性上说拦截器功能更强大些,Filter能做的事情,他都能做,而且可以在请求前,请求后执行,比较灵活。Filter主要是针对URL地址做一个编码的事情、过滤掉没用的参数、安全校验(比较泛的,比如登录不登录之类),太细的话,还是建议用interceptor。不过还是根据不同情况选择合适的。

Filter过滤器配置之入门相关推荐

  1. Java Web idea Filter配置(过滤器配置)

    一.过滤器的概述 1.1过滤器的概念及作用 概念 过滤器是一个能够拦截客户端与服务端请求和响应的web组件(Servlet.Filter.Listener). 2.画图分析 拦截请求:在请求到达客户端 ...

  2. spring boot 配置Filter过滤器

    Filter 过滤器是web开发中很重要的一个组件,下面以一个session登陆的例子介绍下spring boot中如何使用Filter 首先要准备一个实现了Filter的接口的类 SessionFi ...

  3. spring boot 配置多个Filter过滤器

    spring boot 配置Filter过滤器 1.通过 @WebFilter 注解来配置filet过滤器 @Component @WebFilter(urlPatterns = "/2/* ...

  4. springboot项目中利用@WebFilter注解和@Bean配置类两种方式实现Filter过滤器

    过滤器(Filter) 过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理.通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理 ...

  5. java项目配置过滤器_在JavaWeb项目中如何正确的使用Filter过滤器

    在JavaWeb项目中如何正确的使用Filter过滤器 发布时间:2020-11-11 17:12:00 来源:亿速云 阅读:79 作者:Leah 这期内容当中小编将会给大家带来有关在JavaWeb项 ...

  6. java过滤器的执行顺序_Java Filter过滤器(拦截路径的配置+拦截方式的配置+生命周期+多个过滤器的先后执行顺序)...

    Java Filter过滤器+Listen监听器 啥是过滤器 顾名思义即过滤掉一些东西,比如我们经历的高考中考都是过滤器,他过滤掉一些在学习这一方面不是很好的人,而那些成绩好的人则升入高中,大学. 但 ...

  7. Filter(过滤器)入门

    文章目录 第1章 什么是Filter 1.1 Filter简介 1.2 总结 1.3 主要API 1.3.1 Filter接口 1.3.2 FilterConfig接口 1.3.3 FilterCha ...

  8. Filter过滤器的例子与注解配置

    概念 作用 创建 创建web项目 定义类实现Servlet接口,实现其抽象方法 配置Filter 原理 注解配置 过滤器放行 Filter的生命周期 Filter的拦截路径 Filter的拦截方式 F ...

  9. 使用filter过滤器实现简单用户登录验证(不用配置web.xml文件)

    一.filter过滤器的作用 如果想要获取中文字符,或者是显示提交的中文,就需要添加以下代码,来防止乱码的情况发生. request.setCharacterEncoding("utf-8& ...

最新文章

  1. TCP 为什么是三次握手,而不是两次或四次?
  2. python使用正则表达式判别用户输入密码的强弱并提示
  3. Django之url和视图函数
  4. boost::date_time模块wrapping_int的测试程序
  5. postman断言之常用函数
  6. 日志管理:(五) log4j.xml 配置实例
  7. devc++不兼容_Mac压缩文件Win不支持?BetterZip帮你解决!
  8. 哈工大计算机组织与体系结构实验二_小猿关注 | 计算机学院组织开展“新生入学实验室安全教育”主题活动...
  9. Atitit eclipse新特性总结3.1---4.4  4.5
  10. 解决github无法clone
  11. Ubuntu 更换阿里云软件源
  12. utf8和gbk的区别
  13. Eclipse简介、安装及常用快捷键
  14. 人工智能实践作业-修道士和野人过河问题
  15. 几何校正(image to image)
  16. 卡拉兹(Callatz)猜想
  17. 怎么解决缺少java.doc_阿里代码规范检测中方法缺少javadoc注释怎么办
  18. 远景论坛找不到服务器,远景论坛 PCBeta 无法访问的临时解决办法
  19. 神秘大佬写的的运营思维课
  20. 简单玩一下SM2258H+双贴BGA316固态U盘,还有开卡软件

热门文章

  1. golang 源码剖析(8): 析构SetFinalizer
  2. chemkin pro linux64,ANSYS Chemkin Pro 17.0 Release 15151 x64
  3. 程序员慎买日版的笔记本和键盘
  4. 企业宣传 科技 互联网PPT模板
  5. mc服务器备份文件夹,关于ftbbackups配置文件
  6. 抖音只能上下滑动吗_抖音短视频推荐为什么是上下滑动?抖音短视频推荐表格设置方法...
  7. 2-3、AHP层次分析法
  8. 《计算机世界》封面报道:广告联盟7宗罪
  9. 【研究生工作周报】(GAN最新论文调研)
  10. 木马盗用“风行播放器签名”流氓推广