想做一个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中配置一个监听器.
监听器代码:
Servlet Listener的SesstionCreated调用init方法加载在线用户列表. 用Ajax进行无刷新页面聊天.
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进行无刷新页面聊天.
900

被折叠的 条评论
为什么被折叠?



