Filter过滤器配置之入门
过滤器(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过滤器配置之入门相关推荐
- Java Web idea Filter配置(过滤器配置)
一.过滤器的概述 1.1过滤器的概念及作用 概念 过滤器是一个能够拦截客户端与服务端请求和响应的web组件(Servlet.Filter.Listener). 2.画图分析 拦截请求:在请求到达客户端 ...
- spring boot 配置Filter过滤器
Filter 过滤器是web开发中很重要的一个组件,下面以一个session登陆的例子介绍下spring boot中如何使用Filter 首先要准备一个实现了Filter的接口的类 SessionFi ...
- spring boot 配置多个Filter过滤器
spring boot 配置Filter过滤器 1.通过 @WebFilter 注解来配置filet过滤器 @Component @WebFilter(urlPatterns = "/2/* ...
- springboot项目中利用@WebFilter注解和@Bean配置类两种方式实现Filter过滤器
过滤器(Filter) 过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理.通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理 ...
- java项目配置过滤器_在JavaWeb项目中如何正确的使用Filter过滤器
在JavaWeb项目中如何正确的使用Filter过滤器 发布时间:2020-11-11 17:12:00 来源:亿速云 阅读:79 作者:Leah 这期内容当中小编将会给大家带来有关在JavaWeb项 ...
- java过滤器的执行顺序_Java Filter过滤器(拦截路径的配置+拦截方式的配置+生命周期+多个过滤器的先后执行顺序)...
Java Filter过滤器+Listen监听器 啥是过滤器 顾名思义即过滤掉一些东西,比如我们经历的高考中考都是过滤器,他过滤掉一些在学习这一方面不是很好的人,而那些成绩好的人则升入高中,大学. 但 ...
- Filter(过滤器)入门
文章目录 第1章 什么是Filter 1.1 Filter简介 1.2 总结 1.3 主要API 1.3.1 Filter接口 1.3.2 FilterConfig接口 1.3.3 FilterCha ...
- Filter过滤器的例子与注解配置
概念 作用 创建 创建web项目 定义类实现Servlet接口,实现其抽象方法 配置Filter 原理 注解配置 过滤器放行 Filter的生命周期 Filter的拦截路径 Filter的拦截方式 F ...
- 使用filter过滤器实现简单用户登录验证(不用配置web.xml文件)
一.filter过滤器的作用 如果想要获取中文字符,或者是显示提交的中文,就需要添加以下代码,来防止乱码的情况发生. request.setCharacterEncoding("utf-8& ...
最新文章
- c语言arr什么意思6,初识C语言(六)
- 优雅地分离tableview回调
- Python五种常见的算法,你都了解么
- 【深度学习】超级赞!N个神经网络可视化利器
- 使用data-自定义数据及如何获取该值
- c语言popen函数多线程,关于多线程:多线程环境中的Python-Subprocess-Popen行为不一致...
- no required module provides package github.com/gorilla/mux
- [转贴]ASP.NET下对远程SQL SERVER数据库的备份和恢复的存储过程
- h3c交换机查看电源和风扇模块序列号
- sql怎么实现2个表连接_多表上SQL连接:概述和实现
- 用Excel表格拆分一行里的内容
- u盘忘在计算机房,基于MFC的防U盘等移动存储器的遗忘提醒系统
- 使用lsof命令恢复已删除文件(正在使用的文件)
- Linux Debian 系统的单网卡绑定多个IP地址的操作步骤
- 蓝桥杯嵌入式开发经验分享(1.嵌入式学习准备)
- Python调用Geopandas包矢量化txt点数据为shp数据
- 使用STVP菜单乱码阴影很乱变坏等情况
- 使用Scribus进行开源桌面发布
- Easydict 简洁易用的翻译词典,带你轻松优雅地查找单词或翻译文本。
- 科研项目绩效评价探讨︱项目绩效评价专题