2 yaofang520 yaofang520 于 2015.06.10 10:55 提问

java如何解决突然断电后,如修改已经登录的人员的登录状态

在用户表里有一个表示登录状态的字段,可是断电后,就没办法修改登录的状态为未登录了

8个回答

caozhy
caozhy   Ds   Rxr 2015.06.10 11:09

客户端每隔一段时间往服务器发一个信息。服务器写入用户表中的“最后存活时间”字段。
判断用户是否在线的依据响应的修改为,同时满足“最后存活时间”在n分钟之内,并且“已登录”字段为true

jiawei0418
jiawei0418   2015.06.10 11:09

服务器断电??一般都是配ups的吧 怎么会断

caozhy
caozhy   Ds   Rxr 2015.06.10 11:10

客户端每隔一段时间往服务器发一个信息。服务器写入用户表中的“最后存活时间”字段。
判断用户是否在线的依据___相应___的修改为,同时满足“最后存活时间”在n分钟之内,并且“已登录”字段为true

u012216727
u012216727   Ds   Rxr 2015.06.10 11:12

一断电不就相当于关闭了用浏览器浏览的网页,如果是保存在session中,只要判断session里存储的用户为null就可以了;

bulusli3
bulusli3   Ds   Rxr 2015.06.10 11:11

你的后台程序需要定时检查数据库中的该字段的值,比如超过5分钟用户没有任何请求,则将该状态改为未登录,同时,程序每次启动的时候也需要将用户状态重置。

m15004600279
m15004600279   2015.06.10 11:19

服务器启动初始化的时候所有人的状态都应该重置成未登录,然后再启动服务连接。
如果是客户端断电,心跳包不发送的时候就把客户端设置成未登录。

Tiger_Zhao
Tiger_Zhao   Rxr 2015.06.10 11:52

什么数据库?
比如SQL Server可以把登录状态记在临时表中,断电重启临时表都没了,更不要说状态了。等于自动变成未登录了。

wangalong54
wangalong54   2015.06.13 17:12

这个有两种方式,一种用JS,一种用监听器
1,JS
:页面关闭时会触发两个事件:onbeforeunload 和 onunload . 你可以在以上两个事件中写个函数,向后台发个相应的修改状态的请求。
建议用onunload事件,因为刷新页面也会触发onbeforeunload事件。
2 写个实现HttpSessionListener的监听器,监听session的销毁,当session销毁时去修改状态。

建议用JS实现,因为这是即时的,而监听器则会受到session有效时间的影响

Csdn user default icon
上传中...
上传图片
插入图片