|
@@ -0,0 +1,57 @@
|
|
|
+package com.sf.tomcatdemo.listener;
|
|
|
+
|
|
|
+import jakarta.servlet.*;
|
|
|
+import jakarta.servlet.annotation.WebListener;
|
|
|
+
|
|
|
+// 定义一个应用域监听器
|
|
|
+// 需要实现 ServletContextListener和ServletContextAttributeListener
|
|
|
+// 需要使用注解证明 这是一个监听器@WebListener
|
|
|
+@WebListener
|
|
|
+public class ApplicationListener implements ServletContextListener, ServletContextAttributeListener {
|
|
|
+
|
|
|
+ // 重写 应用初始化方法 入参是应用相关事件
|
|
|
+ @Override
|
|
|
+ public void contextInitialized(ServletContextEvent sce) {
|
|
|
+// ServletContextListener.super.contextInitialized(sce);
|
|
|
+ ServletContext servletContext = sce.getServletContext();
|
|
|
+ // 可以使用对象的hashcode验证唯一性
|
|
|
+ System.out.println("application contextInitialized " + servletContext.hashCode());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void contextDestroyed(ServletContextEvent sce) {
|
|
|
+ ServletContext servletContext = sce.getServletContext();
|
|
|
+ System.out.println("application contextInitialized " + servletContext.hashCode());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 实现来自ServletContextAttributeListener接口的三个方法
|
|
|
+ // 分别对应属性的 增加 移除 和 修改
|
|
|
+ // 入参是ServletContextAttributeEvent 也就是处理属性的事件
|
|
|
+ @Override
|
|
|
+ public void attributeAdded(ServletContextAttributeEvent event) {
|
|
|
+ String name = event.getName();
|
|
|
+ Object value = event.getValue();
|
|
|
+ ServletContext servletContext = event.getServletContext();
|
|
|
+ System.out.println("application: " + servletContext.hashCode()
|
|
|
+ + " attributeAdded " + name + " " + value);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void attributeRemoved(ServletContextAttributeEvent event) {
|
|
|
+ String name = event.getName();
|
|
|
+ Object value = event.getValue();
|
|
|
+ ServletContext servletContext = event.getServletContext();
|
|
|
+ System.out.println("application: " + servletContext.hashCode()
|
|
|
+ + " attributeRemoved " + name + " " + value);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void attributeReplaced(ServletContextAttributeEvent event) {
|
|
|
+ String name = event.getName();
|
|
|
+ Object value = event.getValue();
|
|
|
+ ServletContext servletContext = event.getServletContext();
|
|
|
+ Object newValue = servletContext.getAttribute(name);
|
|
|
+ System.out.println("application: " + servletContext.hashCode()
|
|
|
+ + " attributeReplaced " + name + " " + value + " to " + newValue);
|
|
|
+ }
|
|
|
+}
|