Servlet、Filter和Lisener

关系

Servlet、Filter、Lisener

Filter过滤器

对Servlet容器调用Servlet过程的拦截,从而对Servlet的请求、响应前后实现一些特殊的功能。
Filter链。
浏览器–>请求–>服务器【–>Filter1–>Filter2–>资源】
浏览器<–响应<–服务器【<–Filter1<–Filter2<–资源】
Filter的拦截顺序和web.xml中元素的映射顺序一致。

创建Filter

实现Filter接口,重写方法
Filter的创建

生命周期

Filter的三个方法init(FilterConfig config)、doFilter()、destroy()就是Filter的生命周期。

  • destroy()只调用一次。在web服务卸载Filter对象之前被调用,该方法用于释放被Filter对象打开的资源,例如关闭数据库和IO流。
  • init(FilterConfig config)只调用一次初始化过滤器。可以在此方法中完成于构造方法类似的初始化功能。如果初始化代码使用到FilterConfig对象,则初始化代码只能在此方法中书写。
  1. 配置文件
    配置文件
  2. init方法读取配置文件Filter代码
  • doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)。参数req和resp是Web服务器或者上一个过滤器传递过来的请求响应对象。参数chain是当前FilterChain的对象。只有chain调用其doFilter()方法,才能把过滤后的请求响应传递给下一个过滤器或者目标程序。俗称,放行。

拦截不同方式的请求

在web.xml配置文件中。一个配置一个Filter所拦截的资源。其有一个特殊的子元素用于指定过滤器所拦截资源被Servlet容器调用的方式。它的值有四个。
include
REF

  • REQUEST:当客户端直接访问页面时,会调用该过滤器。当通过RequestDispatcher的inculde()和forward()方法访问时,则不会被调用。

  • INCLUDE:同过RequestDispatcher的inculde()方法访问时,被调用。除此之外,不会被调用

  • FORWARD:同过RequestDispatcher的forward()方法访问时,被调用。除此之外,不会被调用

  • ERROR:目标是通过声明式异常处理机制调用时,被调用。除此之外,不会被调用。

Lisener监听器

(后续总结… …)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河西彭于晏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值