您的位置:首页 > 其它

学习笔记之过滤器

2015-04-20 13:52 155 查看
前几天重新学习了一遍过滤器。现在来温故一下过滤器的作用,和生命周期,执行顺序,过滤器的作用域。

过滤器的作用:.在我们的日常生活中,提起过滤器,我相信大家想到的肯定是一个类似漏斗之类的东西。在自来水厂,我们会去过滤一些污水和杂质,然后留下一些干净卫生,可供使用的水。有时候我们身上戴的口罩,也可以看成是一个过滤器,他会过滤一些空气中的灰尘和杂质。因为我们可以得到一个总结就是过滤器就是按照我们的需求来过滤一些特定的东西,当然这类东西通常是不好的,不符合规矩的。最后返回给我们的是一个理想中的产品。在我们的java中也是一样,它通常会按照我们的需求来过滤一些请求和页面。一般在我们开发中常用到的就是1.过滤一些字符编码。2:过滤不合法的账号和密码3:把一些请求参数进行加密4.过滤我们上传的文件

过滤器的生命周期和执行顺序:第一步是执行它的初始化方法:当我们启动一个tomcat服务器的时候,他会去检查你有没有过滤器。如果发现有过滤器,他就会去在web.xml里面注册和配置他所拦截的资源。有一点要注意的是,后注册的过滤器会在前面初始化,也就是以堆栈存储的,先进后出的原则。即过滤器一在web.xml里面的配置在过滤器二前面。则过滤器一会先在里面进行注册,但是初始化的顺序在过滤器二的后面;第二步是执行他的主方法,也就是doFilter方法。他会按照过滤器的配置顺序去执行,当我们进入dofilter方法时,会先执行放行方法FilterChain.dofilter函数前面的代码。然后再去执行FilterChain.dofilter函数后的代码。由于这个函数就是一个放行方法,所以就会去执行servlet方法。如果有多个过滤器就会形成一个过滤器链表,程序会根据你的web.xml的配置顺序依次去执行。



当用户发送一个符合执行过滤器条件的请求时,这个请求会先找到dofilter这个类,然后再去执行他里面的doFilter方法,在这个方法里面可以写你要过滤的东西,然后再去执行dofilter放里面的一个放行方法,让他去接着往下走,他就会去找到 dofilter2这个类,然后去执行里面的dofilter方法,再里面写你还有过滤的需求.再去执行放行方法。如果没有过滤器了,他就会去找到servlet类,执行里面的请求,最后返回一个结果到jsp页面来反馈给用户。当我们修改dilter类的时候,这个过滤器就会自动销毁,并重新去创建。或者我们重启服务器的时候,它也会执行销毁方法。当然了,关闭服务器也会执行销毁方法;

过滤器的四大作用域:首先如果我们不写的话默认的是REQUEST:当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法 访问时,那么该过滤器就不会被调用。

INCLUDE: 如果目标资源是通过RequestDispatcher的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。

FORWARD: 如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外,该过滤器不会被调 用。
ERROR: 如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: