博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
过滤器Filter的使用2
阅读量:3915 次
发布时间:2019-05-23

本文共 1214 字,大约阅读时间需要 4 分钟。

Filter的生命周期

当Tomcat启动时,通过反射机制调用Filter的无参构造创建实例对象(结合配置文件),同时调用init方法实现初始化,doFilter方法调用多次,当Tomcat服务关闭的时候,调用destroy来销毁对象。

无参构造函数:只调用一次,当Tomcat启动时调用,(Filter一定要进行配置)
init方法:只调用一次,当Filter的实例化对象创建完成之后调用
doFilter:调用多次,方位Filter的业务逻辑都写在Filter中
destroy:只调用一次,Tomcat关闭时调用
同时配置多个Filter,Filter的调用顺序是由web.xml中的配置顺序来决定的,写在上面的配置先调用,因为web.xml是从上到下顺序读取的。
在这里插入图片描述

启动

当tomcat一启动,直接就调用构造函数和初始化函数,不是像servlet一样第一次访问的时候创建
doFilter函数每次都会进来
在这里插入图片描述
关闭服务,就执行destroy
在这里插入图片描述
每访问一次,就调用一次 doFilter,这里和servlet一样,每次去请求Filter的时候,就会调doFliter方法。
在这里插入图片描述
新建一个MyFilter
在这里插入图片描述

在web.xml里面配置myFilter是login,login可以和characfilter配起来,也可以和myFilter配起来,和servlet也能配起来

一个login请求对应三个资源,Filter的优先级高于servlet。先是CharacterFilter再是myfilter,再往后走就进到servlet
因为CharacterFilter的配置文件放在myFilter的前面,所以先进到characterfilter。
在这里插入图片描述

用注解的方式配置filter

也可以通过注解的方式简化web.xml的配置

把web.xml里面的代码注释,再用webFilter配置,但是注解的方式不能决定多个filter之间的优先顺序,是随机的
在这里插入图片描述
在这里插入图片描述

实际开发中Filter的使用场景:

1.统一处理中文乱码

2.屏蔽敏感词
3.控制资源的访问权限
在这里插入图片描述
在这里插入图片描述
最终跳到TestServlet,所以

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
往后传 放到servlet里面输出

在这里插入图片描述

在这里插入图片描述
发现是没有处理的 取出来了,原因是Filter是将请求里面的敏感词复制一份,改完输出,但是不能去修改后放回请求,请求里面的内容没有改就继续往下传了,两个资源之间跳转,可以用setAttribute去解决。存到Attribute里面,也用Atrribute去改
Parameter是浏览器给的,可以取但是放不回去
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

控制资源的访问权限

加个过滤器,在过滤器当中判断是否是登录状态,如果是登录,跳到download.jsp,如果不是,需要重新登录

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

过滤器要拦截/download请求
jsp是可以直接访问的,就在根目录下,servlet是间接访问,它是在WEB-INF里面
判断是否登录,转换成session里面是否存在用户信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

转载地址:http://njvrn.baihongyu.com/

你可能感兴趣的文章
ABP vNext 审计日志获取真实客户端IP
查看>>
. NET5实战千万高并发项目,性能吊打JAVA,C#排名万年老五,有望逆袭!
查看>>
ABP vNext分布式事件总线RabbitMQ注意事项
查看>>
【One by One系列】IdentityServer4(一)OAuth2.0与OpenID Connect 1.0
查看>>
为什么人和人的差距这么大?
查看>>
ABP vNext 自动注入,暗藏天坑如斯
查看>>
ML.NET 推荐引擎中一类矩阵因子分解的缺陷
查看>>
Xamarin.Forms 5.0 来了
查看>>
4倍速!ML.NET Model Builder GPU 与 CPU 对比测试
查看>>
微软2020开源回顾:止不住的挨骂,停不下的贡献
查看>>
说说 RabbiMQ 的应答模式
查看>>
OpenTelemetry - 云原生下可观测性的新标准
查看>>
使用 ML.NET 实现峰值检测来排查异常
查看>>
dnSpy反编译、部署调试神器
查看>>
使用 Avalonia 开发 UOS 原生应用
查看>>
开放封闭在.NET中
查看>>
【One by One系列】IdentityServer4(二)使用Client Credentials保护API资源
查看>>
【One by One系列】IdentityServer4(三)使用用户名和密码
查看>>
2021技术人新展望
查看>>
开源项目barcodelib-C#条形码图像生成库
查看>>