javaWEB监听器
概述
Listener 表示监听器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。
监听器可以监听就是在 application,session,request 三个对象创建、销毁或者往其中添加修改删除属性时自动
执行代码的功能组件。
监听器的组件:
监听器可以大致分为四个组件(方便理解)
事件源:事件发生的源头
监听器:监听事件发生
绑定:将监听器绑定到事件源
事件:能够触发监听器的事
监听器分类
Servlet规范中提供了8个监听器
按功能进行划分将其分成三类,如下:
一类:监听三个域对象的创建和销毁的监听器
二类:监听三个域对象的属性变更的监听器。(属性添加、属性移除、属性替换)
三类:监听HttpSession对象中的JavaBean的状态的改变。(绑定、解除绑定、钝化、活化)
监听器分类 | 监听器名称 | 作用 |
---|---|---|
ServletContext监听 | ServletContextListener | 监听ServletContext对象的创建和销毁 |
ServletContextAttributeListener | 监听ServletContext对象中属性的增删改 | |
Session监听 | HttpSessionListener | 监听Session对象的创建和销毁 |
HttpSessionAttributeListener | 监听Session对象中属性的增删改 | |
HttpSessionBindingListener | 监听对象与Session的绑定与解除 | |
HttpSessionActivationListener | 监听Session的激活 | |
Request监听 | ServletRequestListener | 监听Request对象的创建和销毁 |
ServletRequestAttributeListener | 监听Request对象中属性的增删改 |
监听器的开发步骤
1.自定义类实现一类监听器
2.重写监听器中的方法
3.配置xml配置文件或注解配置
配置方式:
/**
* 监听器开发步骤
*/
public class FirstListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent)
{
/**
* 监听ServletContext域的初始化,随着服务器的启动
*/
System.out.println("ServletContext初始化");
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
//监听ServletContext域的销毁,随着服务器的关闭
System.out.println("ServletContext销毁");
}
}
配置xml文件:
<listener>
<listener-class>com.gx.listener.FirstListener</listener-class>
</listener>
注解方式:
@WebListener,加了该注解默认配置了监听器
/**
* 监听器开发步骤
*/
@WebListener
public class FirstListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
/**
* 监听ServletContext域的初始化,随着服务器的启动
*/
System.out.println("ServletContext初始化");
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
/**
* 监听ServletContext域的销毁,随着服务器的关闭
*/
System.out.println("ServletContext销毁");
}
}
一类监听器
监听三个域对象(ServletContext、Session、Request)的创建与销毁
监听ServletContext域对象
实现ServletContextListener接口并覆盖方法
监听服务器启动的时候创建ServletContext对象时
监听服务器关闭的时候ServletContext对象被销毁掉
/**
* 监听ServletContext
*/
@WebListener
public class TestServletContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
/**
* 监听ServletContext域的初始化,随着服务器的启动
*/
System.out.println("ServletContext初始化");
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
/**
* 监听ServletContext域的销毁,随着服务器的关闭
*/
System.out.println("ServletContext销毁");
}
}