过滤器(Filter)

过滤器(Filter)

什么是过滤器

过滤器是一个实现了javax.servlet.Filter接口的Java类。

过滤器的作用

servlet过滤器可以动态地拦截请求和响应,以变化或使用包含在请求和响应中地信息。

可实现地功能

  • 在客户端地请求访问后端资源之前,拦截这些请求。
  • 在服务器地响应发送会客户端之前,拦截这些响应。

根据规范建议的各种类型的过滤器

  • 身份验证
  • 数据压缩过滤
  • 加密过滤
  • 触发资源访问时间过滤
  • 图像转换过滤
  • 日志记录和审核过滤
  • MIME-TYPE链过滤
  • 标记化过滤
  • XSL/T过滤

过滤器方法

  • public void Init(FilterConfig config)
    • web应用程序启动时,web服务器将创建Filter实例对象,并调用Init方法,调用web.XML配置,完成对象的初始化功能。(Filter对象只会创建一次,Init方法也只会执行一次)
  • public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain)
    • 该方法完成实际的过滤操作,也就是说对请求和响应的实际处理是写在这个方法里面的
  • public void destroy()
    • Servlet容器在销销毁过滤器实例前调用的方法,在该方法中释放过滤器使用的资源。

过滤器的使用

  1. 在web.xml中配置

    1. <filter>
          <filter-name>TestFilter</filter-name>
          <filter-class>com.filter.TestFilter</filter-class>
          <init-param>
              <param-name>charSet</param-name>
              <param-value>utf-8</param-value>
          </init-param>
      </filter>
      <filter-mapping>
          <filter-name>TestFilter</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>
      
  2. 注解配置

    1. @WebFilter(“/*”);

    2. @WebFilter 的属性

      属性名类型描述
      filterNameString指定过滤器的 name 属性,等价于
      valueString[]该属性等价于 urlPatterns 属性。但是两者不应该同时使用。
      urlPatternsString[]指定一组过滤器的 URL 匹配模式。等价于 标签。
      servletNamesString[]指定过滤器将应用于哪些 Servlet。取值是 @WebServlet 中的 name 属性的取值,或者是 web.xml 中 的取值。
      dispatcherTypesDispatcherType指定过滤器的转发模式。具体取值包括: ASYNC、ERROR、FORWARD、INCLUDE、REQUEST。
      initParamsWebInitParam[]指定一组过滤器初始化参数,等价于 标签。
      asyncSupportedboolean声明过滤器是否支持异步操作模式,等价于 标签。
      descriptionString该过滤器的描述信息,等价于 标签。
      displayNameString该过滤器的显示名,通常配合工具使用,等价于 标

过滤器的执行顺序(拦截顺序)

  1. 如果是通过web.xml配置的,其执行顺序是按照的位置自上向下执行。
  2. 但如果是通过注解配置的话,其执行顺序则是按照过滤器名首字母顺序执行的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值