监听器-Listener
2023-12-15 22:01:47
Listener监听器介绍
1.Listener监听器是javaWeb三大组件之一。javaWeb三大组件分别是:Servlet程序、Listener监听器、Filter过滤器
2.Listener是javaEE的规范,就是接口
3.监听器的作用是,监听某种变化(一般就是对象的创建/销毁,属性变化),触发对应方法完成相应的任务
4.JavaWeb中的监听器(共八个),目前最常用的是ServletContextListener
javaWeb的监听器
1.ServletContextListener监听器
1.作用:监听ServletContext创建或销毁(当Web应用启动时,就会创建ServletContext ),即生命周期监听,
2.应用场景:
(1)、加载初始化的配置文件,比如spring的配置文件;
(2)、任务调配,(配合Timer/TimerTask)
3.相关方法:
//void contextInitialized(ServletContextEvent sce):创建Servletcontext时触发
//void contextDestroyed(ServletContextEvent sce):销毁Servletcontext时
4.应用实例:
代码:(创建和销毁)
配置监听器:在web.xml文件中写入下列代码
<listener>
<listener-class>com.listener.hspServletContextListener</listener-class>
</listener>
实现类
package com.listener;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class hspServletContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContext servletContext = sce.getServletContext();
System.out.println("hspServletContextListener 监听到" +
servletContext + "被创建...");
//如果获取到ServletContext对象,就可以进行业务处理
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
ServletContext servletContext = sce.getServletContext();
System.out.println("hspServletContextListener 监听到" +
servletContext + "被销毁 ...");
//可以对servletContext里的数据进行处理,或者时日志的管理
}
}
5.注意:
1.当一个类实现 ServletContextListener 接口时,就是一个监听器 2.该类可以监听的事件 由该类实现的监听接口决定 3.hspServletContextListener 就是一个监听者 4.当web应用启动时,就会产生 ServletContextEvent 事件,就会调用 监听器的对应事件处理方法contextInitialized,同时会传递事件对象 5.我们可以通过 ServletContextEvent 事件对象,来获取需要的信息, 在进行业务处理 6.因为需要在web.xml文件中配置,所以tomcat会知道改监听器的存在
2.ServletContextAttributeListener监听器
1.作用:监听ServletContext属性变化,该监听器使用较少
2.相关方法:
//void attributeAdded(ServletContextAttributeEvent event):添加属性时调用
//void attributeReplaced(ServletContextAttributeEvent event):替换属性时调用
//void attributeRemoved(ServletContextAttributeEvent event):移除属性时调用
3.代码
servlet类
package com.listener;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "HiServlet",urlPatterns = "/HiServlet")
public class HiServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//给servletContext对象操作属性
ServletContext servletContext=request.getServletContext();
servletContext.setAttribute("name","张三");
servletContext.setAttribute("name","李四");
servletContext.removeAttribute("name");
System.out.println("HiServlet操作完毕...");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
监听器
package com.listener;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
public class hspServletContextAttributeListener implements ServletContextAttributeListener {
/**
* 添加属性
* @param scae
*/
@Override
public void attributeAdded(ServletContextAttributeEvent scae) {
System.out.println("hspServletContextAttributeListener监听到添加属性"
+scae.getName()+"="+scae.getValue());
}
/**
* 删除属性
* @param scae
*/
@Override
public void attributeRemoved(ServletContextAttributeEvent scae) {
System.out.println("hspServletContextAttributeListener监听到删除属性"
+scae.getName()+"="+scae.getValue());
}
/**
* 修改
* @param scae
*/
@Override
public void attributeReplaced(ServletContextAttributeEvent scae) {
System.out.println("hspServletContextAttributeListener监听到修改属性"
+scae.getName()+"="+scae.getValue());
}
}
文章来源:https://blog.csdn.net/weixin_74484843/article/details/134901013
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!