Listener(监听器)

作用

监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。监听器其实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法立即被执行。

1概念

JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext、HttpSession和 ServletRequest这三大域对象的创建、销毁事件以及监听这些域对象中的属性发生修改的事件。

 监听器在GUI编程中常用!

demo体现监听器作用:

代码

package com.listener;

import jakarta.servlet.ServletContext;
import jakarta.servlet.http.HttpSessionEvent;
import jakarta.servlet.http.HttpSessionListener;
//对网站在线人数统计
public class ListenerDemo implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
//获取Session、网站的上下文
ServletContext servletContext = se.getSession().getServletContext();
//输出SessionID
System.out.println(se.getSession().getId());
//从ServletContext中取出值,默认为null
Integer onlineCount = (Integer) servletContext.getAttribute("onlineCount");
//对取出的值进行判断
if (onlineCount == null){
onlineCount=new Integer(1);
}else {
int count = onlineCount.intValue();
onlineCount=new Integer(count+1);
}
//把值添加进去
servletContext.setAttribute("onlineCount",onlineCount);
}
}

web.xml配置
<!--注册监听器-->
<listener>
<listener-class>com.listener.ListenerDemo</listener-class>
</listener>

显示页面
  <body>
<%--从ServletContext中取出name为onlineCount的值--%>
当前有<span><%=this.getServletConfig().getServletContext().getAttribute("onlineCount")%>人</span>
</body>
posted @ 2022-11-03 20:06  mo-de  阅读(145)  评论(0)    收藏  举报