java在线用户查看_java Session统计在线用户,并且显示在线用户
关键字: 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统计在线用户,并且显示在线用户相关推荐
- java 字符串 数字个数_Java简单统计字符串中汉字,英文字母及数字数量的方法...
本文实例讲述了Java简单统计字符串中汉字,英文字母及数字数量的方法.分享给大家供大家参考,具体如下: package org.zhy.demo.algorithm; /** * 有一个字符串,其中包 ...
- java实时更新权限_java – 如何使用Spring Security重新加载用户更新的权限
如果您需要动态更新登录的用户权限(当这些权限发生变化时,无论什么原因),无需登出并登录,您只需要重置Spring SecurityContextHolder中的Authentication对象(安全令 ...
- 用户查看订单信息php,php – 以编程方式获取用户刚刚在Ubercart中完成的订单
警告!不要使用上面的答案.请参阅我的评论以获得解释 而不是上面提交的答案(您永远不应该使用)创建自定义Ubercart条件操作(CA)并将其添加到您的Ubercart CA工作流程中的"触发 ...
- java html pdf 中文_java html 转pdf 中文可显示
摘要: 最近正好项目有用到 ITEXT ,在网络上搜索了一番,发现了很多方案,但是都是显示中文有问题,本文提供一种最便捷的方式来实现,不需要任何额外 JAR 包. 引用一句另外一个人提出解决方式的一句 ...
- java 数字千分位_java实现数字千分位的显示
由于项目中要求输入的数字用千分位显示,数字保留两位小数,而且要求再删除数字的时候也要求删除后的数字也要是千分位显示,好像表达的有点不清楚,贴代码吧,作为一个小工具吧. /** * 格式化数字为千分位显 ...
- java panel控件_JAVA :Jpanel 控件 无法显示问题
在做一个嵌入式摄像头项目中,遇到了这样一个郁闷的问题. 新建了一个类继承Jpanel,向其中添加了一些控件后,加入到原来的JFrame中,然后Jpanel中控件,无论如何都显示不了了. (为了方便控制 ...
- Cookie/Session机制详解--如何区分不同用户
转载自:https://www.cnblogs.com/zhouhbing/p/4204132.ht 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是C ...
- 【疑难解决】EasyNVR通道显示在线却无法播放视频,该如何解决?
EasyNVR是基于RTSP/Onvif协议的视频平台,既有软件版,也有硬件版,其中,硬件版配置后可直接放置于现场,使用时通网通电即可,体积小巧,部署方便.软硬件版功能相似,都具有视频监控直播.录像. ...
- 锁定计算机算qq在线吗,看对方qq上只显示“在线”两个字,是不是对方就是电脑在线?不是手机在线...
看对方qq上只显示"在线"两个字,是不是对方就是电脑在线?不是手机在线以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快 ...
最新文章
- 用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。
- HTML5 - Canvas动画样例(谷歌弹跳球)
- 干货|各种WAF绕过手法学习
- oracle rac ora 12560,rac ORA-12541: TNS:no listener问题 非常急!!
- 腾讯企业邮箱报错 smtp.exmail.qq.comport 465, isSSL false
- Silverlight中开发和设计人员的合作文档信息
- leetcode 删除排序数组中的重复项
- android ddmlib,通过 ddmlib 使用 adb,构建框架基础库
- 2010年被逼出来的10个中国IT产品
- unity reflect_使用Unity Reflect的不同方法
- 计算机流程图知识点,高中数学流程图知识点
- python中反斜杠是什么意思_python中反斜杠是什么意思
- hive 配置参数说明大全
- hdfs datanode 清除回收站的命令
- Uos统信系统 nginx
- Uncaught Error: Undefined constant “Ford“
- 计算机硬件系统设计—码表数码管显示驱动设计
- 记一次DllNotFoundException(缺少vs C++ 环境导致)
- C语言-找出0-100内的素数
- thinkphp使用force
热门文章
- 网络编程(part8)--传输层服务之TCP和UDP
- SAP 电商云 Spartacus UI Proxy Facade 的一个实际例子
- SAP Business ByDesign 和支付宝与钉钉集成的一个原型开发案例
- SAP Spartacus 服务器端渲染的依赖注入之 ProductPageEventBuilder
- CDS view里case - when - else关键字的用法
- 使用wxpy这个基于python实现的微信工具库的一些常见问题
- year range in CRM Fiori Sales Pipeline
- bubble click event handling
- SAP Fiori 应用 My Appointment - Belonging to me, Search by team, Search by group
- Marketing Cloud demo环境和API使用方法说明