`
txlaijava
  • 浏览: 55488 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java监听器

阅读更多
   想做一个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进行无刷新页面聊天.
  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics