文章目录
- 监听器
- 1.监听器的分类
- 2.application域监听器案例
监听器
- 概念:后端要发生一些事情的时候,自动触发一些代码的执行;
1.监听器的分类
-
web中定义八个监听器接口作为监听器的规范,这八个接口按照不同的标准可以形成不同的分类
-
按监听的对象划分
- application域监听器 ServletContextListener ServletContextAttributeListener
- session域监听器 HttpSessionListener HttpSessionAttributeListener HttpSessionBindingListener HttpSessionActivationListener
- request域监听器 ServletRequestListener ServletRequestAttributeListener
-
按监听的事件分
- 域对象的创建和销毁监听器 ServletContextListener HttpSessionListener ServletRequestListener
- 域对象数据增删改事件监听器 ServletContextAttributeListener HttpSessionAttributeListener ServletRequestAttributeListener
- 其他监听器 HttpSessionBindingListener HttpSessionActivationListener
2.application域监听器案例
注:本章节仅讲述应用域监听器接口
案例
设计三个Servlet分别进行增加数据,修改数据,删除数据
创建隔壁包下进行监听
实现ServletContextListener,实现其方法
配置映射
xml文件配置listener 或者直接添加注解即可
- 构建Servlet1
@WebServlet("/Servlet1")
public class Servlet1 extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext servletContext = this.getServletContext();servletContext.setAttribute("keya","valuea");}
}
-
监听Servlet1的构建以及销毁
-
应用域监听接口以及api
-
接口是HttpServletContextListener
-
实现方法是contextInitialized、contextDestroyed
-
- 监听数据 增删改–多实现一个方法ServletContextAttributeListener
@WebListener("/Servlet1")
public class MyApplicationListener implements ServletContextListener, ServletContextAttributeListener {@Overridepublic void attributeAdded(ServletContextAttributeEvent scae) {ServletContextAttributeListener.super.attributeAdded(scae);}@Overridepublic void attributeRemoved(ServletContextAttributeEvent scae) {ServletContextAttributeListener.super.attributeRemoved(scae);}@Overridepublic void attributeReplaced(ServletContextAttributeEvent scae) {ServletContextAttributeListener.super.attributeReplaced(scae);}
}
attributeAdded()
attributeRemoved()
attributeReplaced()
-
监听接口中可以重写相关方法,一旦被监听的对象执行了某项操作,tomcat后台就会进行响应,监听到;
-
例如attributeAdded就监听this.getContext().setAttribute()这个方法的操作
-
一般来说监听的东西五花八门,用的时候查即可;