JavaWeb过滤器

来源:互联网 发布:ug五轴联动编程 编辑:程序博客网 时间:2024/05/16 11:09

过滤器

  • 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访问的,过滤器就会被调用,否则过滤器不会被调用
0 0
原创粉丝点击