文章目录:
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>