JavaWeb过滤器

过滤器

  • Filter称为过滤器,它是一个接口。web开发人员可以通过过滤器对web资源进行管理。例如可以对访问的jsp、静态的html以及servlet进行拦截。
  • 功能:URL级别权限访问。过滤敏感词汇,压缩响应的信息。

创建一个过滤器

  • implements Filter接口,并注册过滤器

  • 注册过滤器

    <filter>
          <filter-name>TestFilter</filter-name>
          <filter-class>com.lovo.filter.TestFilter</filter-class>
          <init-param>
      <!--设置不需要过滤的  -->
                  <param-name>NotFilterList</param-name>
                  <param-value>/login.jsp,/LoginServlet</param-value>
           </init-param>
      </filter>
  • 映射URL地址

    <filter-mapping>
      <filter-name>TestFilter</filter-name>
      <!--过滤条件 /* 表示所有的都要进入这个过滤器-->
      <url-pattern>/*</url-pattern>
      <!-- 这里面写入的也是过滤条件。默认过滤 request请求,如果写的是FORWARD或INCLUDE则表示对应的内部派发要经过该过滤器-->
      <dispatcher>REQUEST</dispatcher>
      <filter-mapping>
  • 在doFilter()方法中处理请求,是否要能到达目标资源---通过chain.doFilter(req,resp)控制。

  • FilterChain对象时Filter里面非常重要的一个对象,doFilter()和Filter接口里面的是不同的方法。

流程

  1. 所有符合过滤器的请求,进来会执行一段代码。
  2. 判断是否进入目标资源,进入目标资源处理业务。
  3. 返回过滤器再执行一段代码。

生命周期

  • 容器在启动的过程中读取web.xml,找到过滤器配置创建实例
  • 调用init方法做初始化
  • 满足过滤器的请求都经过doFilter方法
  • 容器关闭,销毁Filter

过滤器链

  • 在web开发中,我们可以开发多个过滤器,这些过滤器组合起来就成为过滤器链。
  • 过滤器里面的内容执行顺序和url配置没关系,和注册的顺序有关系,先注册的先进入。第一个过滤器执行过程中,调用chain.doFilter()方法会去找当前目标还有没有经过其他过滤器,没有就直接进入目标,如果目标程序还有第二个过滤器,那就进入第二个过滤器,嵌套执行。

<dispatcher>REQUEST</dispatcher>

  • 这个标签表示指定过滤器所拦截的资源被servlet容器所调用的方式。
  • REQUEST(默认):当前用户直接访问过滤器,web容器会调用过滤器
  • INCLUDE:目标资源是通过requestDispater.include访问的,过滤器就会被调用,否则过滤器不会被调用
  • FORWARD:目标是通过requestDispater.forward访问的,过滤器就会被调用,否则过滤器不会被调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值