文章目录:
1.介绍
2.监听器作用
3.监听器接口实现类开发步骤
4.ServletContextListener接口
5.ServletContextAttributeListener接口
1.介绍
- 一组(8个)来自于Servlet规范中接口。
- 监听器接口由项目开发人员负责实现。
- 监听器负责监听 作用域对象 并在指定事件中调用监听处理方法。
作用域对象:存在于服务端计算机内存中,可以在指定条件下为servlet之间提供数据共享服务的对象。
Servlet规范中定义作用域对象:3个
1.ServletContext接口----全局作用域对象
2.HttpSession接口 ------会话作用域对象
3.HttpServletRequest接口----请求作用域对象
2.监听器作用
1) 监听作用域对象生命周期变化时刻
2) 监听作用域对象存放共享数据变化时刻
3.监听器接口实现类开发步骤
1)根据监听目的选择对应接口进行实现
2)重写监听器接口中事件处理方法,这些方法在指定事件产生时由tomcat负责调用
3)web.xml向tomcat注册监听器接口实现类
4.ServletContextListener接口
监听全局作用域对象生命周期变化时刻。
package com.songzihao.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
*
*/
public class OneListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("恭喜恭喜,祝你今生平平安安!!!");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("兄弟走好!!!");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 注册监听器 -->
<listener>
<listener-class>com.songzihao.listener.OneListener</listener-class>
</listener>
</web-app>
5.ServletContextAttributeListener接口
监听全局作用域对象共享数据变化时刻。
package com.songzihao.controller;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
public class OneServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext application=request.getServletContext();
//新增共享数据
application.setAttribute("key1",100);
//更新共享数据
application.setAttribute("key1",500);
//移除共享数据
application.removeAttribute("key1");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
package com.songzihao.listener;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
/**
*
*/
public class OneListener implements ServletContextAttributeListener {
@Override
public void attributeAdded(ServletContextAttributeEvent event) {
System.out.println("新增了共享数据");
}
@Override
public void attributeRemoved(ServletContextAttributeEvent event) {
System.out.println("移除了共享数据");
}
@Override
public void attributeReplaced(ServletContextAttributeEvent event) {
System.out.println("更新了共享数据");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 注册监听器 -->
<listener>
<listener-class>com.songzihao.listener.OneListener</listener-class>
</listener>
<servlet>
<servlet-name>OneServlet</servlet-name>
<servlet-class>com.songzihao.controller.OneServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>OneServlet</servlet-name>
<url-pattern>/one</url-pattern>
</servlet-mapping>
</web-app>