Servlet过滤器

来源:互联网 发布:淘宝感谢卡 编辑:程序博客网 时间:2024/06/05 15:21

1.过滤器的概念

Java中的Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应。

主要用于对HttpServletRequest 进行预处理,也可以对HttpServletResponse 进行后处理,是个典型的处理链。


优点:过滤链的好处是,执行过程中任何时候都可以打断,只要不执行chain.doFilter()就不会再执行后面的过滤器和请求的内容。而在实际使用时,就要特别注意过滤链的执行顺序问题。


2.过滤器的作用描述

在HttpServletRequest 到达Servlet 之前,拦截客户的HttpServletRequest 。

根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和数据。

  在HttpServletResponse 到达客户端之前,拦截HttpServletResponse 。

根据需要检查HttpServletResponse ,可以修改HttpServletResponse 头和数据

3.Filter接口

  1.如何驱动

在 web 应用程序启动时,web 服务器将根据 web.xml 文件中的配置信息来创建每个注册的 Filter 实例对象,并将其保存在服务器的内存中 

2.方法介绍

 init()  Init 方法在 Filter 生命周期中仅执行一次,web 容器在调用 init 方法时

 destory()  在Web容器卸载 Filter 对象之前被调用。该方法在Filter的生命周期中仅执行一次。在这个方法中,可以释放过滤器使用的资源。 

doFilter() Filter 链的执行。

4.FilterChain接口web.xml配置



<!-- 编码过滤器 -->      <filter>          <filter-name>setCharacterEncoding</filter-name>          <filter-class>com.filter.EncodingFilter</filter-class>          <init-param>              <param-name>encoding</param-name>              <param-value>utf-8</param-value>          </init-param>      </filter>      <filter-mapping>          <filter-name>setCharacterEncoding</filter-name>          <url-pattern>/*</url-pattern>      </filter-mapping>     <!-- 请求url日志记录过滤器 -->      <filter>          <filter-name>logfilter</filter-name>          <filter-class>com.filter.LogFilter</filter-class>      </filter>      <filter-mapping>          <filter-name>logfilter</filter-name>          <url-pattern>/*</url-pattern>      </filter-mapping>


5.过滤器的一些常见应用

1:认证过滤:对用户请求进行统一的认证。

2:登录和审核过滤:对用户的访问请求进行记录和审核。

3:图像转换过滤:转换图像格式。

4:数据压缩过滤 :对用户发生的数据进行压缩,从而减少传输量。

5:加密过滤:对请求和响应进行加密解密处理。

6:令牌过滤

7:资源访问触发事件过滤

8:XSLT过滤

9:MIME-type过滤 


























0 0