想做一个Java的即时聊天功能.能够监测到用户的登入,用户的退出.想到了Servlet监听器.很久没用过这个东西了.了解了一下.主要有以下方法.
1 .ServletContextAttributeListener监听对ServletContext属性的操作,比如增加/删除/修改
2 .ServletContextListener监听ServletContext,当创建ServletContext时,激发 contextInitialized(ServletContextEvent sce)方法;当销毁ServletContext时,激发 contextDestroyed(ServletContextEvent sce)方法。
3 .HttpSessionListener监听HttpSession的操作。当创建一个Session时,激发sessionCreated(SessionEvent se)方法;当销毁一个 Session时,激发sessionDestroyed (HttpSessionEvent se)方法。
4 .HttpSessionAttributeListener监听HttpSession中的属性的操作。当在Session增加一个属性时,激发 attributeAdded(HttpSessionBindingEvent se) 方法;当在Session删除一个属性时,激发 attributeRemoved(HttpSessionBindingEvent se)方法;当在Session属性被重新设置时,激发 attributeReplaced(HttpSessionBindingEvent se) 方法.
在xml中配置一个监听器.
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<listener>
<listener-class>com.listener.UserListener</listener-class>
</listener>
</web-app>
监听器代码:
package com.listener;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import com.message.ChatPool;
public class UserListener implements HttpSessionListener,ServletContextListener
{
private Map <String ,HttpSession> userlist=new HashMap <String ,HttpSession>();
/**
* 初始化到application
*/
public void contextInitialized(ServletContextEvent e)
{
ChatPool.init(userlist);
}
public void sessionCreated(HttpSessionEvent e)
{
userlist.put(e.getSession().getId(), e.getSession());
}
public void sessionDestroyed(HttpSessionEvent e)
{
userlist.remove(e.getSession().getId());
}
public void contextDestroyed(ServletContextEvent e)
{
}
}
Servlet Listener的SesstionCreated调用init方法加载在线用户列表. 用Ajax进行无刷新页面聊天.
分享到:
相关推荐
主要给大家介绍了关于java监听器实现和原理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
java监听器练习,java初学者!
Java监听器添加 四种监听器 内部 外部 内部匿名 自身
监听器之定时器,写一个定时器的监听器,这个监听器每十秒向控制台输出一次时间信息 博客地址:https://blog.csdn.net/qq_36631076/article/details/80401609
简单的java监听器小练习,适合初学者!
java监听器和过滤器详解,详细而且简单,保证能看懂
一个java监听器的实现demo,即观察者设计模式实现
java一个监听器的例子
主要介绍了Java设计模式之监听器模式,结合实例形式较为详细的分析了java设计模式中监听器模式的概念、原理及相关实现与使用技巧,需要的朋友可以参考下
2.1Java的时间监听机制涉及到三个组件:事件源、事件监听器、事件对象 2.2当事件源上发生操作时,它会调用事件监听器的一个方法,并且调用这个方法时,会传递事件对象过来 2.3事件监听器是由开
NULL 博文链接:https://mayufenga1.iteye.com/blog/637662
NULL 博文链接:https://xace.iteye.com/blog/424250
最近一直在搞低耦合的代码设计,后来发现JAVA中的监听器效果很不错,就特地研究了一下监听流程,后来经过调试终于成功,供大家分享下: 响应代码: /** * 事件响应运行 * @author wangchen * */ class EventRun {...
Java的事件监听器Java的事件监Java的事件监听器听器
Java的监听器种类,文档内详细描述了java各种监听器,能够让你在系统当中合理的去使用,从而提高系统的效率。
监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。当增加一个HttpSession时,就激发sessionCreated...
servelt 监听器 class MyRequest extends HttpServletRequestWrapper { public MyRequest(HttpServletRequest request) { super(request); } public String MyEncoding(String value) { String value...
NULL 博文链接:https://skyfar666.iteye.com/blog/2205583
NULL 博文链接:https://wenchangping.iteye.com/blog/1869464