一,过滤器

1.1 概念

生活中的过滤器:净水器

web应用中的过滤器:当访问服务器的某些资源时,过滤器可以把请求拦截下来,完成一些特殊的功能

过滤器的作用:登录验证、统一处理编码、敏感字的过滤

web三大组件之一:servlet、filter、listener

1.2 使用步骤

  1. 定义类实现类Filter接口
  2. 重写方法
  3. 配置要过滤的资源路径

<filter>
<display-name>LoginFilter</display-name>
<filter-name>LoginFilter</filter-name>
<filter-class>com.qf.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>



1.3 执行流程

  1. 启动服务器时,执行 init() 初始化功能
  2. 当访问了过滤器中配置的拦截路径的资源时,该资源的访问会被拦截,并执行 doFilter() 方法
  3. 执行功能的增强
  4. 放行:chain.doFilter(request, response);
  5. 访问指定资源
  6. 执行放行后的代码


1.4 过滤器的生命周期

  1. init():初始化过滤器,服务器启动时执行
  2. doFilter():执行拦截,访问了配置的拦截路径时执行,每次访问都会执行
  3. dostroy():释放资源,只有在正常关闭服务器时才会执行


1.5 过滤器链

配置多个过滤器

执行顺序:

  1. 过滤器1
  2. 过滤器2
  3. 放行后的资源
  4. 过滤器2
  5. 过滤器1


1.6 过滤路径的配置

  1. 拦截指定资源:/index.jsp
  2. 拦截目录:/test/*
  3. 扩展名拦截:*.jsp
  4. 拦截所有:/*


二,监听器

2.1 概述和分类

概念:web的三大组件之一

分类:

  1. 域对象生命周期:
  1. ServletContextListener
  2. HttpSessionListener
  3. ServletRequestListener
  1. 域对象中数据的变化:
  1. ServletContextAttributeListener
  2. HttpSessionAttributeListener
  3. ServletRequestAttributeListener
  1. HttpSession的钝化和活化
  1. HttpSessionActivationListener
  2. HttpSessionBindingListener


2.2 使用步骤

  1. 自定义类实现Listener接口
  2. 重写方法
  3. 配置

<listener>
<listener-class>com.qf.listener.MyServletContextListener</listener-class>
</listener>