中易网

求助~~jsp使用application保存在线用户的问题

答案:2  悬赏:0  
解决时间 2021-03-24 09:50
最近学习JSP...遇到个问题

目的: 实现在线用户的集中管理

我的思路:
1.使用登录页面,将用户的昵称添加到application的一个List集合当中.
2.List中存放每一个登录用户,用户对象的属性有{ 昵称(不重复), 在线状态(0表示在线, 1表示离线) }
3.用户登陆后,将自己的信息添加到List将在线状态设为0
4.登录用户页面每隔3秒刷新List中对应自己的记录,将在线状态设为0.
5.有个JSP页面每隔5秒刷新application中的List, 将用户在线状态为0的改为1, 将用户在线状态为1的从List中移除.
注明:这样的思路是为了防止用户没有执行登出操作,直接关闭浏览器,或者死机,断电重启等一些意外状态.

问题:
不知道如何实现第5步骤.
1.如何能能够将一个JSP在该项目启动时自动运行.
2.如何在执行第5步骤的操作时每隔5秒从获取List并将其作为参数传入方法,最后再将扫描后的List交给application.

补充说明:
我使用MyEclipse7.5作为开发工具
本人新手,胡乱弄的~~如果有哪位可以给谢帮助不胜感激~~或者哪位有更好的方法,思路~~菜鸟虚心求教~~谢谢~~
最佳答案
给你一断代码,这个代码是防止用户重复登陆的,你修改下就可以了
package com.china.util;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Hashtable;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

import com.china.pojo.CitiesAndEmpPojo;


public class OnlineOperatorListener implements HttpSessionBindingListener {

// 当前被监听的操作员Pojo实例
private CitiesAndEmpPojo operatorPojo;
private HttpSession session = null;
// 容器上下文对象
private ServletContext application = null;
// 在线操作员列表
private static Hashtable operatorTable = null;


public OnlineOperatorListener(CitiesAndEmpPojo operatorPojo) {

this.operatorPojo = operatorPojo;

}

public synchronized boolean validateOperatorOnline(String operatorName) {
return operatorTable.containsKey(operatorName);

}


public void valueBound(HttpSessionBindingEvent event) {

// 创建Http会话对象
this.session = event.getSession();
// 创建容器上下文对象
this.application = this.session.getServletContext();
// 将用户保存到在线列表
operatorTable.put(this.operatorPojo.getEmpcode(), this.operatorPojo);
// 保存更改
this.application.setAttribute("OperatorTable", operatorTable);

}


public void valueUnbound(HttpSessionBindingEvent event) {

// 创建Http会话对象
this.session = event.getSession();
// 创建容器上下文对象
this.application = this.session.getServletContext();
// 将用户移出在线列表
operatorTable.remove(this.operatorPojo.getEmpcode());
// 保存更改
this.application.setAttribute("OperatorTable", operatorTable);
}
全部回答
我是来看评论的
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
被自己的亲人抛弃好伤心难过求更伤感的歌曲听
银科大厦地下停车场怎么样
一年级语文下册 十二、我会写作文 题目:《蚂
投资一家大城小食零食加盟店好吗?需要多少钱
将餐厅与客厅做隔断的的木柱子用什么材料?松
武汉宝岛眼镜总店有好看的无边框眼镜吗?价位
咙唬,打一成语
想在石家庄普通KTV玩一晚上得花多少钱?
看到有人穿皇袍起朝 还发朋友圈 算违法吗
飞利浦吸尘器配件正品圆毛刷头
香港二手房按揭费用怎么计算?哪家银行最好
哥哥生病了希望他快点好起来的话 简单
炒榛蘑的做法,炒榛蘑怎么做好吃,炒榛蘑的家
云浮罗定2011年11月21日天气预情况?
2016吴江恒达星湖湾房价涨了吗?
推荐资讯
电信3G上网卡每月2G流量正常看电影听音乐的话
谁有阿布的照片?
我起诉对方不配合过户,法院说先调解吧,这个
公积金大额还款 公积金大额还款合适吗
从广州坐火车回海南多少钱?
做泰国试管婴儿要多久才能验孕
苹果6买的指纹按键贴和全覆盖钢化膜先贴哪个
滨州有没有汽车配件批发市场?在哪里?
从广州番禺东涌镇大稳小学到广州南站怎么坐公
魔兽世界卡拉赞、海山、祖阿曼等副本68级去有
周深在蒙面唱将猜猜猜哪一期出现
求天津河北客运站到蓟县的首末班车时间?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?