过滤器入门看这一篇就够了Java知识点大全

首先,我们来看看过滤器究竟Web容器的哪处:

从上面的图我们可以发现,当浏览器发送请求给服务器的时候,先执行过滤器,然后才访问Web的资源。服务器响应Response,从Web资源抵达浏览器之前,也会途径过滤器。。

我们很容易发现,过滤器可以比喻成一张滤网。我们想想现实中的滤网可以做什么:在泡茶的时候,过滤掉茶叶。那滤网是怎么过滤茶叶的呢?规定大小的网孔,只要网孔比茶叶小,就可以实现过滤了!

引申在Web容器中,过滤器可以做:过滤一些敏感的字符串【规定不能出现敏感字符串】、避免中文乱码【规定Web资源都使用UTF-8编码】、权限验证【规定只有带Session或Cookie的浏览器,才能访问web资源】等等等,过滤器的作用非常大,只要发挥想象就可以有意想不到的效果

也就是说:当需要限制用户访问某些资源时、在处理请求时提前处理某些资源、服务器响应的内容对其进行处理再返回、我们就是用过滤器来完成的!

直接举例子来说明吧:

Servlet没有指定编码的情况下,获取得到的是乱码

也就是说:如果我每次接受客户端带过来的中文数据,在Serlvet中都要设定编码。这样代码的重复率太高了!!!!

有过滤器的情况就不一样了:只要我在过滤器中指定了编码,可以使全站的Web资源都是使用该编码,并且重用性是非常理想的!

只要Java类实现了Filter接口就可以称为过滤器!Filter接口的方法也十分简单:

其中init()和destory()方法就不用多说了,他俩跟Servlet是一样的。只有在Web服务器加载和销毁的时候被执行,只会被执行一次!

值得注意的是doFilter()方法,它有三个参数(ServletRequest,ServletResponse,FilterChain),从前两个参数我们可以发现:过滤器可以完成任何协议的过滤操作!

那FilterChain是什么东西呢?我们看看:

FilterChain是一个接口,里面又定义了doFilter()方法。这究竟是怎么回事啊??????

我们可以这样理解:过滤器不单单只有一个,那么我们怎么管理这些过滤器呢?在Java中就使用了链式结构。把所有的过滤器都放在FilterChain里边,如果符合条件,就执行下一个过滤器(如果没有过滤器了,就执行目标资源)。

上面的话好像有点拗口,我们可以想象生活的例子:现在我想在茶杯上能过滤出石头和茶叶出来。石头在一层,茶叶在一层。所以茶杯的过滤装置应该有两层滤网。这个过滤装置就是FilterChain,过滤石头的滤网和过滤茶叶的滤网就是Filter。在石头滤网中,茶叶是属于下一层的,就把茶叶放行,让茶叶的滤网过滤茶叶。过滤完茶叶了,剩下的就是茶(茶就可以比喻成我们的目标资源)

publicclassFilterDemo1implementsFilter{publicvoiddestroy(){}publicvoiddoFilter(ServletRequestreq,ServletResponseresp,FilterChainchain)throwsServletException,IOException{//执行这一句,说明放行(让下一个过滤器执行,如果没有过滤器了,就执行执行目标资源)chain.doFilter(req,resp);}publicvoidinit(FilterConfigconfig)throwsServletException{}}filter部署过滤器和Servlet是一样的,需要部署到Web服务器上的。

用于注册过滤器

FilterDemo1FilterDemo1word_file/WEB-INF/word.txt用于为过滤器指定一个名字,该元素的内容不能为空。元素用于指定过滤器的完整的限定类名。元素用于为过滤器指定初始化参数,它的子元素指定参数的名字,指定参数的值。在过滤器中,可以使用FilterConfig接口对象来访问初始化参数。filter-mapping元素用于设置一个Filter所负责拦截的资源。

一个Filter拦截的资源可通过两种方式来指定:Servlet名称和资源访问的请求路径

@WebFilter(filterName="FilterDemo1",urlPatterns="/*")上面的配置是“/*”,所有的Web资源都需要途径过滤器

如果想要部分的Web资源进行过滤器过滤则需要指定Web资源的名称即可!

上面已经说过了,过滤器的doFilter()方法是极其重要的,FilterChain接口是代表着所有的Filter,FilterChain中的doFilter()方法决定着是否放行下一个过滤器执行(如果没有过滤器了,就执行目标资源)。

publicvoiddoFilter(ServletRequestreq,ServletResponseresp,FilterChainchain)throwsServletException,IOException{System.out.println("我是过滤器1");//执行这一句,说明放行(让下一个过滤器执行,或者执行目标资源)chain.doFilter(req,resp);}我们来访问一下test.jsp页面:

我们发现test.jsp(我们的目标资源)成功访问到了,并且在服务器上也打印了字符串!

我们来试试把chain.doFilter(req,resp);这段代码注释了看看!

test.jsp页面并没有任何的输出(也就是说,并没有访问到jsp页面)。

直接看下面的代码。我们已经知道了”准备放行“会被打印在控制台上和test.jsp页面也能被访问得到,但“放行完成“会不会打印在控制台上呢?

publicvoiddoFilter(ServletRequestreq,ServletResponseresp,FilterChainchain)throwsServletException,IOException{System.out.println("准备放行");//执行这一句,说明放行(让下一个过滤器执行,或者执行目标资源)chain.doFilter(req,resp);System.out.println("放行完成");}答案也非常简单,肯定会打印在控制台上的。我们来看看:

我们再多加一个过滤器,看看执行顺序。

System.out.println("过滤器1开始执行");//执行这一句,说明放行(让下一个过滤器执行,或者执行目标资源)chain.doFilter(req,resp);System.out.println("过滤器1开始完毕");过滤器2System.out.println("过滤器2开始执行");chain.doFilter(req,resp);System.out.println("过滤器2开始完毕");ServletSystem.out.println("我是Servlet1");当我们访问Servlet1的时候,看看控制台会出现什么:

执行顺序是这样的:先执行FilterDemo1,放行,执行FilterDemo2,放行,执行Servlet1,Servlet1执行完回到FilterDemo2上,FilterDemo2执行完毕后,回到FilterDemo1上

注意:过滤器之间的执行顺序看在web.xml文件中mapping的先后顺序的,如果放在前面就先执行,放在后面就后执行!如果是通过注解的方式配置,就比较urlPatterns的字符串优先级

filter的三种典型应用:

我们直接把用户名和密码都放在了Cookie中,这是明文的。懂点编程的人就会知道你的账号了。

THE END
1.过滤器有什么作用?什么是过滤器?设备安装后,由技术人员进行调试,设定过滤时间和清洗转换时间,待处理的水由入水口进入机体,过滤器开始正常工作,当达到预设清洗时间时,电控器给水力控制阀、驱动电机信号,引发下列动作:电动机带动刷子旋转,对滤芯进行清洗,同时控制阀打开进行排污,整个清洗过程只需持续数十秒钟,当清洗结束时,关闭控制阀,电机停止转动,系统...https://henan.china.com/m/rdzx/2023/0106/2530336789.html
2.小型过滤器价格小型过滤器图片YEE鱼缸过滤器4w壁挂式瀑布三合一小型水泵循环系统低音净水设备 50000条评价 好评93% YEE鱼缸过滤器3w壁挂式瀑布三合一小型水泵循环系统低音净水设备 50000条评价 好评93% YEE鱼缸过滤器循环水泵增氧过滤三合一小型内置过滤水泵家用养鱼专用 2w小缸专用【适用30cm以下】 雨淋管出水 500条评价 好评96% 金利佳...https://so.m.jd.com/chanpin/450528.html
3.过滤器超滤微滤系统价格参数型号杭州安诺过滤器材有限公司为您提供过滤器、超滤、微滤系统的价格、参数、型号等信息,浙江安诺运行可靠,售后完善,赢得了国内外用户的认可。欢迎来电或留言咨询。https://www.antpedia.com/ibook7507/sc/236/
4.不锈钢过滤设备囊式过滤器喷码机过滤器囊式空气过滤器杭州杜特(www.dtfilter.com)供应囊式过滤器,喷码机过滤器等产品,公司具有多种非标设备订制加工能力,可以为客户提供OEM订制产品,欢迎来电洽谈!http://www.dtfilter.com/
1.廊坊京鲨易滤过滤器有限公司乳化液过滤站(高压-清水-回液) 矿用精密管道过滤器 防腐除垢阻垢过滤一体机 自清洗刷式过滤器 乳化液系统过滤站 化工行业全自动反冲洗过滤器 Automatic backwash filter in chemical industry 上一页 1 2 下一页 自清洗刷式过滤器 Self cleaning brush filter 上一页 1 2 3 4 下一页 精密滤芯反冲...http://www.lfjsyl.com/
2.过滤器品牌排行前十名过滤器十大品牌排行榜中国品牌网旗下过滤器十大品牌排行榜页面为您推荐十大过滤器品牌榜单,经过统计有10家品牌成功入选过滤器十大品牌排行榜。排名前十名分别是:3M、A.O.史密斯、格力GREE、美的Midea、TRULIVA沁园、Angel安吉尔、碧然德BRITA、Pentair滨特尔、汉斯希尔SYR、立升Litreehttps://www.chinapp.com/brand/9923
3.过滤器上海玛芮特致力于提供高品质进口过滤系统,过滤器,滤芯及其它产品。 我司是 Filtration Group 弗杰(原MAHLE马勒工业过滤)中国区授权代理。主要代理 - 液压润滑过滤器及滤芯,自动反冲洗及刮刀过滤器,叶片式过滤器,烛式过滤器,滤芯式过滤器及滤芯,除尘器及除尘滤芯,油水分离器等产品 ...https://www.sh-mrt.com/
4.滤清器型号价格图片生产厂家米思米工业品一站式采购平台官网为您提供滤清器规格,滤清器型号,滤清器价格、图片、生产厂家等相关产品信息,滤清器采购就选米思米官网www.misumi.com.cnhttps://www.misumi.com.cn/seojingtai/lvqingqi.html
5.袋式过滤器精密过滤器保安过滤器气体过滤器新志成过滤是一家专业从事气体过滤器,精密过滤器,反冲洗过滤器,自清洗过滤器,管道过滤器,滤芯的设计及制造的技术型企业。公司致力于提供从产品开发设计、制造及销售的全套技术服务。 新志成为制药,生物技术,食品,化学,石化,天然气,工业,水处理等各大领域提供过滤和分https://www.xzcgl.cn/
6.袋式过滤器精密过滤器多介质过滤器厂家水天蓝环保是一家专业生产精密过滤器,袋式过滤器,多介质过滤器,活性炭过滤器等产品的源头厂家,可为客户提供设计方案,专注于水处理行业的各种过滤器。http://www.chinacxwj.com/
7.全自动过滤器自清洗过滤器袋式过滤器篮式过滤器青岛雷勒过滤科技有限公司是一家致力于不锈钢过滤网、楔形滤芯、涂料压力筛、滤袋等产品的研发、生产和服务一体的综合型公司。雷勒生产各种不锈钢过滤元件,用于各种关键的过滤与分离环节。主要产品有:楔形滤网,胶液筛,全自动过滤器,筛管,约翰逊网,涂料压力筛,自清洗http://lehler.cn/
8.上海滤达过滤系统有限公司官网自清洗过滤器公司生产的过滤设备有袋式过滤器、摇臂式过滤器、微孔折叠滤芯过滤器、钛棒过滤器、精密过滤器、保安过滤器、全自动自清洗过滤器、大通量过滤器、篮式过滤器、无菌水箱、不锈钢预处理罐。http://shanghailvda.com/
9.袋式过滤器自清洗过滤器滤芯过滤器研发生产过滤器设备的专业厂家,可定制可批量加工袋式过滤器,自清洗过滤器,全自动过滤器,刮刀过滤器,气动刮刀过滤器,烛式过滤器,塑胶过滤器,PP袋式过滤器,过滤器网篮,钛棒过滤器,滤芯过滤器等https://www.jsfilter.cn/
10.滤油机过滤器自清洗过滤器自洁式空气过滤器新乡市海特滤器有限公司是一家集过滤元件、过滤设备的研发、生产、销售、咨询服务于一体的现代化股份制企业。公司专业生产滤芯、过滤器、滤油机、除尘设备、工业水处理设备等产品及配件,公司始终坚持走多元化发展道路,目前公司业务已涉及到油、水、空气过滤等领域,致力于https://www.htfilter.cn/
11.全自动反冲洗过滤器磁性过滤器角通除污器篮式过滤器上海飓祺机械有限公主要从事过滤设备研发设计、生产制造、船舶配件加工、机械零件加工及销售为一体。主营:全自动刷式过滤器,磁性过滤器,不锈钢袋式过滤器,篮式过滤器,角通除污器等。http://www.juqijixie.com/
12.丰源过滤设备膜过滤系列 平板过滤器系列 滤芯过滤器系列 正负压过滤器系列 实验室用系列 制药及配液罐 折叠式膜滤芯系列 液体过滤袋系列 水系及有机微孔滤膜系列 不锈钢配件系列 产品展示 更多 不锈钢板框精密过滤机 产品参数:BASY□/400_N_UB1.应用用于各种悬浮液的固液分离,适用范围广。应用于医药、食品、化工、环保、水处理...http://www.cnfengyuan.com/
13.保安过滤器精密过滤器不锈钢保安过滤器保安(精密)过滤器 保安过滤器(又称精密过滤器),筒体是由优质304或316不锈钢精制而成,可以安装不同规格型号的过滤芯,如:PP滤芯、线绕滤芯、活性炭滤芯等,由于其过滤面积大,速度快,不堵塞,使用方便,因此,广泛应用于各行业的预处理及终端过滤。保安过滤器有快开式、法兰式、抱箍式。 应用范围 广泛用于各行业的...https://www.lefilter.com/baoanguolvqi/
14.自清洗过滤器(F型)品牌:自清洗过滤器(F型)杭州励进环保设备有限公司是一家主营紫外线杀菌器,旁流水处理器,全自动过滤器,全程综合水处理器,电子水处理器,袋式过滤器,自清洗过滤器,浅层砂过滤器,盘式过滤器,定压补水装置,叠片过滤器,疏水自动加压器,浅层介质过滤器等环保水处理设备。杭州励进环保设备有限公司主营产品有:袋式过滤器、电子水处理器、旋流...https://china.guidechem.com/trade/pdetail6855495.html