监听HTTP会话

监听HTTP会话
2011年09月01日
   监听HTTp会话是利用Servlet监听程序。结合监听技术,来讨论获得当前平台中用户总数的方法。
  在Web应用中,可以监听HTTP会话活动情况、HTTP会话中属性的设置情况,也可以监听HTTP会话的active、passivate情况等
  可以通过HttpSessionListener接口监听HTTP会话创建、销毁的信息;通过HttpSessionActivationListener监听HTTP会话的active、passivate情况;通过HttpSessionBindingListener监听HTTP会话中对象的绑定信息;通过HttpSessionAttributeListener监听HTTP会话中属性的设置请求。
  下面看个实例
  package com.test.ch9; import java.util.Hashtable; import java.util.Iterator; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class SessionListener implements HttpSessionListener{ //集合对象,保存session对象的引用 static Hashtable ht=new Hashtable(); //实现HttpSessionListener接口,完成session创建事件控制 public void sessionCreated(HttpSessionEvent arg0){ HttpSession session=arg0.getSession(); ht.put(session.getId(),session); System.out.println("create session:"+session.getId()); } //实现HttpSessionListener接口,完成session销毁事件控制 public void sessionDestroyed(HttpSessionEvent arg0){ HttpSession session=arg0.getSession(); System.out.println("destory session:"+session.getId()); ht.remove(session.getId()); } // 返回全部session对象集合 static public Iterator getSet(){ return ht.values().iterator(); } //依据session id返回指定的session对象 static public HttpSession getSession(String sessionId){ return (HttpSession)ht.get(sessionId); } }
  该实例中,SessionListener实现了HttpSessionListener接口。SessionListener类还有一个属性,就是Hashtable用来保存所有的登录信息。当创建一个Session时,就调用sessionCreate()方法将登陆会话信息保存到Hashtable中;当销毁有关Session时,就调用sessionDestroyed()方法将登陆会话信息从Hashtable中移除,这样就实现了管理在线用户登录会话信息的目的。
  我们还需要几个页面程序来测试这个监听器的工作并且深入体会下Session的会话管理机制。
  测试程序如下:
   会话管理 会话管理实例 名称: 事件: 提交 重置
  当访问index.jsp时会出现一个类似登录框的会话描述页面,输入会话描述后进入display.jsp显示刚才输入的会话信息。
  例如
   会话控制显示 "); out.println("thing:"+session.getAttribute("thing") +"
"); out.println("session id:"+session.getId()+"
"); out.println("create time:"+session.getCreateTime()); %> 管理 注销
  单击管理会进入会话关联页面(session.jsp)单击“注销”会进入会话注销页面(logout.jsp)是HTTP会话无效,
  例如:会话关联的程序
   Manager session JSP 会话管理
会话Id 用户名 事件 创建时间 操作 "); out.println(""+session1.getId()+"") out.println(""+session1.getAttribute("name")+""); out.println(""+session1.getAttribute("thing")+"") out.println(""+session1.getCreationTime()+"") ; %> '>销毁 "); System.out.println("sessionId"+session1.getId()); } catch(Exception ex){ ex.printStackTrace(); return; } } %>
  注销会话的程序(logout.jsp)
   会话控制
  如果单击“销毁”,则可以强制将会话信息移除如下
   LL JSP
  最后将监听器部署到web.xml中去。如下
   com.test.ch9.SessionListener
  
  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值