一,过滤器
1.1 概念
生活中的过滤器:净水器
web应用中的过滤器:当访问服务器的某些资源时,过滤器可以把请求拦截下来,完成一些特殊的功能
过滤器的作用:登录验证、统一处理编码、敏感字的过滤
web三大组件之一:servlet、filter、listener
1.2 使用步骤
- 定义类实现类Filter接口
- 重写方法
- 配置要过滤的资源路径
<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 执行流程
- 启动服务器时,执行 init() 初始化功能
- 当访问了过滤器中配置的拦截路径的资源时,该资源的访问会被拦截,并执行 doFilter() 方法
- 执行功能的增强
- 放行:chain.doFilter(request, response);
- 访问指定资源
- 执行放行后的代码
1.4 过滤器的生命周期
- init():初始化过滤器,服务器启动时执行
- doFilter():执行拦截,访问了配置的拦截路径时执行,每次访问都会执行
- dostroy():释放资源,只有在正常关闭服务器时才会执行
1.5 过滤器链
配置多个过滤器
执行顺序:
- 过滤器1
- 过滤器2
- 放行后的资源
- 过滤器2
- 过滤器1
1.6 过滤路径的配置
- 拦截指定资源:/index.jsp
- 拦截目录:/test/*
- 扩展名拦截:*.jsp
- 拦截所有:/*
二,监听器
2.1 概述和分类
概念:web的三大组件之一
分类:
- 域对象生命周期:
- ServletContextListener
- HttpSessionListener
- ServletRequestListener
- 域对象中数据的变化:
- ServletContextAttributeListener
- HttpSessionAttributeListener
- ServletRequestAttributeListener
- HttpSession的钝化和活化
- HttpSessionActivationListener
- HttpSessionBindingListener
2.2 使用步骤
- 自定义类实现Listener接口
- 重写方法
- 配置
<listener>
<listener-class>com.qf.listener.MyServletContextListener</listener-class>
</listener>