一.Listener(监听器)
-
1.1概念
JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext、HttpSession和 ServletRequest这三大域对象的创建、销毁事件以及监听这些域对象中的属性发生修改的事件。1.2JavaWeb中监听器的分类
在Servlet规范中定义了多种类型的监听器(一共8个监听器),它们用于监听的事件源分别为ServletContext,HttpSession和ServletRequest这三个域对象。Servlet规范针对这三个对象上的操作,又把多种类型的监听器划分为三种类型:1.域对象的生命周期监听:监听域对象自身的创建和销毁。这个监听器需要实现相应的监听器接口:ServletContextListener、HttpSessionListener、ServletRequestListener。
2.域对象的属性监听:监听域对象中属性的增加和删除。这个监听器需要实现的监听器接口为:ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener
3.感知监听(都与HttpSession域对象有关):监听绑定到HttpSession域中的某个JavaBean对象的状态的监听器。这个监听器需要实现的监听器接口:HttpSessionBindingListener、HttpSessionActiveationListener.
二.Filter(过滤器)
- 简介:Filter翻译为中文是过滤器的意思。
Filter是JavaWeb的三大web组件之一Servlet、Filter、Listener
Filter的作用是在请求到达WEB资源(HTML、CSS、Servlet、JSP)之前进行拦截。
Filter需要交给Tomcat访问器来管理
Filter的作用:
1.Filter可以在请求到达目标资源之前进行拦截
2.Filter也可以放行请求
3.Filter可以在响应到达浏览器之前做一个预处理
- 执行顺序
- 我们可以为一个资源设置多个过滤器,
当我们为一个资源设置了多个过滤器时,这些过滤器就组成一个Filter链的结构。
当我们去掉用chain.doFilter(),如果该过滤器后边还有其他的过滤,
相当于调用了下一个过滤器doFilter()方法
如果过滤器后没有其他的过滤器,我们调用chain.doFilter()
相当于调用了目标资源的service()方法 - 多个Filter的执行顺序,有filter-mapping标签的配置顺序决定,
filter-mappint靠前,则filter先执行,靠后则后执行。 - 我们可以通过修改filter-mapping的顺序来修改Filter的执行顺序,
但是注意,filter-mapping不能写在filter标签的前边。
- 我们可以为一个资源设置多个过滤器,
- 工作流程
- 使用步骤:
- 编写一个类去实现 Filter 接口
- 要实现接口,首先要爱pom文件里面导入javax.servlet-api