2023-01-06
一、过滤器链
1、含义:如果出现一个请求存在多个过滤器对其过滤,出现过滤器链。
在放行前,过滤器是正序执行,放行后过滤器是倒序执行。
2、过滤器的顺序:是与filter-mapping配置上下文位置有关
二、监听器
1、作用范围:
(1)监听域对象的创建和销毁
域对象:
①ServletContext:应用域(对象是web项目加载时创建,web项目卸载时销毁),监听器接口是“ServletContextListener”。
②HttpSession:会话域(第一次调用getSession创建,销毁是强制销毁),监听器接口是“HttpSessionListener”。
③HttpServletRequest:请求域(有请求就创建,响应结束就销毁),监听器接口是“HttpServletRequestListener”。
(2)监听域对象内共享数据的添加、修改、删除
①添加数据:setAttribute
②删除数据:removeAttribute
③修改数据:setAttribute (如果key值存在,此方法就是修改数据)
2、创建监听器
(1)创建一个类
先创建一个“web Application”的项目,删除“index.jsp”.在src文件夹下的“com.hh”下创建一个类“listener.HelloListener”
(2)实现一个接口
例如“ServletContextListener”
(3)实现接口中的抽象函数
public class HelloListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent servletContextEvent) { System.out.println("ServletContext对象创建后执行此方法"); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { System.out.println("ServletContext对象销毁后执行此方法"); }}
(4)注册监听器
在“WEB-INF”文件夹下的“web.xml”中
<listener-class>com.hh.listener.HelloListener</listener-class>
三、Servlet、Filter、Listener的注解方式开发
功能:替代配置文件的。
1、Servlet的注解
(1)位置:在类的上方
(2)代码:
@WebServlet(name="HelloServlet",value="/hello")
注:name就相当于配置文件中的“servlet-name”的值;value就相当于配置文件中“url-pattern”的值
简写形式:name可以省略,当只剩下“value”属性,属性名可以省略,即:
@WebServlet("/hello")
2、Filter的注解
(1)位置:类的上方
(2)代码:
@WebFilter(filterName = "HelloFilter",urlPatterns = "/hello")
3、Listener的注解
(1)位置:类的上方
(2)代码:
@WebListener