Filter过滤器生命周期,常用类和方法总结

1:过滤器
 * 过滤器不是目标资源,它是在去目标资源前后的过程中执行的(也就是双向的过程),另外,过滤器通常是过滤访问路径,只要
你访问的资源中包含了我要过滤的路径,我就对你进行过滤,并且它的功能很强大,什么都能被过滤。
 * 创建的过滤器的,是写一个类并且实现Filter接口。(javax包)过滤器是单利的,服务器只会创建一次。

2:过滤器的生命周期
 * void init(FilterConfig)这个方法会在过滤器被创建之后马上执行,并且这个方法只会调用一次,在服务器启动时被创建。
 * void doFilter(ServletRequest,ServlerResponse,FilterChain) 每次拦截目标资源的时候都会调用这个方法。
 * void destory() 这个方法会在过滤器被销毁之前执行,这个方法只会执行一次,过滤器会在服务器关闭的时候销毁。
分析:当拦截器执行的是放行的操作的时候,此时doFilter的方法相当于把,要访问的目标资源变成了一个方法,放行的操作就是执行这个
方法,当这个方法体执行结束的时候,才会执行过滤器中放行之后的操作。并且过滤器是双向的。

3:在web.xml中配置过滤器。
这个配置的过程和配置servlet的过程十分相似。
<filter>
   <filter-name></filter-name>//此处写的是你的filter类名称
   <filter-class></filter-class>//此处写的是你的filter类所在的路径(包名加类名)
</filter>
<filtr-mapping>
   <filter-name></filter-name>//此处写的是你的filter类名称
   <url-patten></purl-patten>//此处写的是filter要过滤的类的特征(/*表示要过滤所有的请求,*在以后的学习中用的很多)
</filter-mapping>

4:和filter相关的类
filterConfig
 *获取过滤器的配置名称 <filter-name>
 *获取过滤器的初始化参数<filter><init-param>...</init-param></filter>
 *获取ServletContext
filterChain(chain的意思就是链)
 这个类只有一个方法 doFilter(ServletRuquest,ServletResponse)这个方法的作用就是用来放行,如果执行这个方法之后,后序还有
过滤器,那么就会执行过滤器,若果没有就会去执行目标资源。可以理解成,如果有多个过滤器会链成一条线,一个接一个的执行。
PrintWriter pw  = new PrintWriter(System.out,true);//创建一个输出流,别切设置为自动刷新(只在换行是进行自动刷新)
5:filter过滤器的两种配置(说白了就是两种拦拦截方式)
 *<url-patten>/jsp/*</url-patten>/、这种事使用的比较广泛的拦截方式,,拦截一批
 *<servlet-name></servlet-name>//指名道姓的拦截。这种用的很少。
//注意:我们可以在filter中设置request的属性名称和属性值,并且在目标资源中获取到request的属性值,这个说明了过滤器和目标资源是共享那个request和热拼色的这个就给我们提供了一种
掉包的可能,我们可以自己写一个类,实现HttpServletRequest,或者HttpServltResopnse接口,然后我们可以对其中的getWriter方法
进行修改(request就不用),然后我们可以把那个参数名称换成被我们掉包的request和reponse,这样做可以造成,过滤器和目标资源
之间不能共享数据,比较坏。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值