关键字: httpsession

1.http://www.jspcn.net/htmlnews/11049329478121583.html      监听器

2.session.invalidate() ,session才会destroy

3.HttpSessionListener:  这个监听取不到session里面的值

下面的代码可以获取上线,下线的在线列表 :

public class OnlineListener implements HttpSessionListener ,HttpSessionAttributeListener{

public void sessionCreated(HttpSessionEvent event) {//只要一打开浏览器就会执行 ,没有登陆也会执行.

}

public void sessionDestroyed(HttpSessionEvent event) {//只有超时,invalidate()才会执行

HttpSession se=event.getSession();

OnlineManager.getInstance().removeSession(se); //从列表中删除

// System.out.println("remove session....................");//为什么浏览窗口关闭了,没有执行啊???

}

public void attributeAdded(HttpSessionBindingEvent event) {//如果登陆成功, 就把上线 用户添加 到列表.

HttpSession se=event.getSession();

String name=event.getName();

String value=(String)event.getValue();

if("username".equals(name)){

OnlineManager.getInstance().addSession(se); //添加

}

}

}

public class OnlineManager {

private static OnlineManager om;

private  Map sessions;

private OnlineManager(){

sessions=new HashMap();//为什么没有共用一个sessions;

}

public static OnlineManager getInstance(){

if(om==null){

om=new OnlineManager();

}

return om;

}

public void addSession(HttpSession se){

String key=(String)se.getAttribute("username");

sessions.put(key, se);

System.out.println("add 1 : "+sessions.size());

}

public void removeSession(HttpSession se){

String key=(String)se.getAttribute("username");

//sessions.remove(key);  //这个只是把key=null

sessions.remove(sessions.get(key));

System.out.println("remove 1 : " +"key:"+key+sessions.size());

System.out.println(sessions);

}

}

------------------------

第二种方法实现在线,下线:

public class BindSession implements HttpSessionBindingListener {

private String username;

public BindSession(String username){

this.username=username;

}

public void valueBound(HttpSessionBindingEvent event) {

HttpSession session = event.getSession();

// String name=(String)session.getAttribute("name");

ServletContext application = session.getServletContext();

// 把用户名放入在线列表

List onlineUserList = (List) application.getAttribute("onlineUserList");

// 第一次使用前,需要初始化

if (onlineUserList == null) {

onlineUserList = new ArrayList();

application.setAttribute("onlineUserList", onlineUserList);

}

onlineUserList.add(this.username);

System.out.println("valueBound: .........."+onlineUserList.size());

}

public void valueUnbound(HttpSessionBindingEvent event) {

HttpSession session = event.getSession();

// String name=(String)session.getAttribute("name");

ServletContext application = session.getServletContext();

// 从在线列表中删除用户名

List onlineUserList = (List) application.getAttribute("onlineUserList");

onlineUserList.remove(this.username);

System.out.println(this.username + "退出。");

}

}

public class Login extends HttpServlet {

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

String name=req.getParameter("name");

String pass=req.getParameter("password");

boolean isLogin=false;

int len=set.size();

for(int i=0;i

if(set.containsKey(name)&&set.containsValue(pass)){

isLogin=true;

}

}

if(isLogin){

req.getSession().setAttribute("username", name);

System.out.println("login ...username="+name);

//BindListener 的使用:

BindSession bl=new BindSession(name);

req.getSession().setAttribute("lis", bl);

resp.sendRedirect("index.jsp");

}

else{

resp.sendRedirect("login.jsp");

}

java在线用户查看_java Session统计在线用户,并且显示在线用户相关推荐

  1. java 字符串 数字个数_Java简单统计字符串中汉字,英文字母及数字数量的方法...

    本文实例讲述了Java简单统计字符串中汉字,英文字母及数字数量的方法.分享给大家供大家参考,具体如下: package org.zhy.demo.algorithm; /** * 有一个字符串,其中包 ...

  2. java实时更新权限_java – 如何使用Spring Security重新加载用户更新的权限

    如果您需要动态更新登录的用户权限(当这些权限发生变化时,无论什么原因),无需登出并登录,您只需要重置Spring SecurityContextHolder中的Authentication对象(安全令 ...

  3. 用户查看订单信息php,php – 以编程方式获取用户刚刚在Ubercart中完成的订单

    警告!不要使用上面的答案.请参阅我的评论以获得解释 而不是上面提交的答案(您永远不应该使用)创建自定义Ubercart条件操作(CA)并将其添加到您的Ubercart CA工作流程中的"触发 ...

  4. java html pdf 中文_java html 转pdf 中文可显示

    摘要: 最近正好项目有用到 ITEXT ,在网络上搜索了一番,发现了很多方案,但是都是显示中文有问题,本文提供一种最便捷的方式来实现,不需要任何额外 JAR 包. 引用一句另外一个人提出解决方式的一句 ...

  5. java 数字千分位_java实现数字千分位的显示

    由于项目中要求输入的数字用千分位显示,数字保留两位小数,而且要求再删除数字的时候也要求删除后的数字也要是千分位显示,好像表达的有点不清楚,贴代码吧,作为一个小工具吧. /** * 格式化数字为千分位显 ...

  6. java panel控件_JAVA :Jpanel 控件 无法显示问题

    在做一个嵌入式摄像头项目中,遇到了这样一个郁闷的问题. 新建了一个类继承Jpanel,向其中添加了一些控件后,加入到原来的JFrame中,然后Jpanel中控件,无论如何都显示不了了. (为了方便控制 ...

  7. Cookie/Session机制详解--如何区分不同用户

    转载自:https://www.cnblogs.com/zhouhbing/p/4204132.ht 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是C ...

  8. 【疑难解决】EasyNVR通道显示在线却无法播放视频,该如何解决?

    EasyNVR是基于RTSP/Onvif协议的视频平台,既有软件版,也有硬件版,其中,硬件版配置后可直接放置于现场,使用时通网通电即可,体积小巧,部署方便.软硬件版功能相似,都具有视频监控直播.录像. ...

  9. 锁定计算机算qq在线吗,看对方qq上只显示“在线”两个字,是不是对方就是电脑在线?不是手机在线...

    看对方qq上只显示"在线"两个字,是不是对方就是电脑在线?不是手机在线以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快 ...

最新文章

  1. 用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。
  2. HTML5 - Canvas动画样例(谷歌弹跳球)
  3. 干货|各种WAF绕过手法学习
  4. oracle rac ora 12560,rac ORA-12541: TNS:no listener问题 非常急!!
  5. 腾讯企业邮箱报错 smtp.exmail.qq.comport 465, isSSL false
  6. Silverlight中开发和设计人员的合作文档信息
  7. leetcode 删除排序数组中的重复项
  8. android ddmlib,通过 ddmlib 使用 adb,构建框架基础库
  9. 2010年被逼出来的10个中国IT产品
  10. unity reflect_使用Unity Reflect的不同方法
  11. 计算机流程图知识点,高中数学流程图知识点
  12. python中反斜杠是什么意思_python中反斜杠是什么意思
  13. hive 配置参数说明大全
  14. hdfs datanode 清除回收站的命令
  15. Uos统信系统 nginx
  16. Uncaught Error: Undefined constant “Ford“
  17. 计算机硬件系统设计—码表数码管显示驱动设计
  18. 记一次DllNotFoundException(缺少vs C++ 环境导致)
  19. C语言-找出0-100内的素数
  20. thinkphp使用force

热门文章

  1. 网络编程(part8)--传输层服务之TCP和UDP
  2. SAP 电商云 Spartacus UI Proxy Facade 的一个实际例子
  3. SAP Business ByDesign 和支付宝与钉钉集成的一个原型开发案例
  4. SAP Spartacus 服务器端渲染的依赖注入之 ProductPageEventBuilder
  5. CDS view里case - when - else关键字的用法
  6. 使用wxpy这个基于python实现的微信工具库的一些常见问题
  7. year range in CRM Fiori Sales Pipeline
  8. bubble click event handling
  9. SAP Fiori 应用 My Appointment - Belonging to me, Search by team, Search by group
  10. Marketing Cloud demo环境和API使用方法说明