目录
1. Filter
1.1 Filter的核心类
1.2 Filter的配置
1.3 Filter顺序
2. Listeners
2.1 监听器接口分类
2.2 应用级监听
2.3 会话级监听
2.4 请求级监听
3. 注解描述
3.1 主要注解
对Request请求的对象进行拦截(在用户的请求访问资源前),拦截后可以做一些处理(加解密、日志记录...)
Filter的配置可以通过注解或者部署描述完成,但当资源需要被多个Filter使用,且它的触发顺序很重要的时候,只能通过部署描述配置。
Filter的实现类必须实现javax.servlet.Filter接口
1.1.1 三个重要的方法
init(FilterConfig filterConfig) Servlet容器初始化Filter时,会触发init(),该方法只调用一次,用于初始化Filter。doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) Servlet容器每次梳理Filter相关资源的时候,都会调用该Filter实例的doFilter方法既可以拦截请求,也可以拦截响应一个资源可以被多个Filter关联,也称为Filter链。只要调用filterChain.doFilter()就会触发链路中的下一个Filter,直到最后一个Filter,才会执行servlet方法。如果没有在该方法的结尾处调用filterChain.doFilter(),Request请求终止,结束。destory() Servlet容器销毁Filter时触发。如果多个Filter应用于同一个资源,那么Filter的触发顺序就取决于部署描述中的顺序。
Servlet API提供了一系列的时间和事件监听接口。监听的所有事件继承自java.util.Event对象。上层的Servlet可以通过事件驱动监听一些事件的状态。
编写监听器的方法:实现监听接口,在部署文件描述文件中指定监听接口的实现类。