java异常登出事件怎么获取

King_jingyu 2015-07-13 02:19:44
异常登出事件包括有浏览器关闭、电脑异常关机等,
正常的登陆登出是可以取到登出事件的,但是异常登出该怎么取。
比如说某个用户登陆了系统然后又关闭了浏览器怎么取到登出时间
...全文
148 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
空心兜兜 2015-07-14
  • 打赏
  • 举报
回复
浏览器关闭这件事,你抓不到,因为刷新、跳转都等于离开当前页面
Defonds 2015-07-14
  • 打赏
  • 举报
回复
这个没有办法取到,因为 HTTP 是没有状态的。但是可以通过设置 session 过期时间,超时的视为登出
踩沙滩 2015-07-13
  • 打赏
  • 举报
回复
这不行吧,B/S不是长连接的,关了服务器也不知道呀。可以弄个定时器,指定时间发给服务器,报告状态。如果指定时间服务器没接收到那就是异常退出了。不知这样可行不。。。
Last指令的实现 一、 背景描述 在Unix系统中,有一个last指令可以查看用户登录服务器的历史记录,last指令的工作原理就是读取unix下的一个系统文件,解析然后输出的效果。 在今后的电信用户数据采集系统项目中,就是通过读取该系统文件来确定用户使用电信实验室服务器的时间长度并收费的。 该系统文件的目录与文件名是/usr/adm/wtmpx,在Unix的系统提供一组的核函数来操作该函数,相对处理比较容易。 在这个项目中,我们只要了解了wtmpx的结构,然后通过Java的IO与NIO技术,就可以实现与last同样的功能。并轻松实现电信数据采集系统。 二、 实现要求 a) 与last的实现效果一模一样。效果如下: b) 显示登录名,设备类型,客户IP,登录开始与结束时间,登录时长。 三、 实现技术 a) 掌握wtmpx文件的格式与C 的结构的补齐。 b) 掌握IO技术。 c) 掌握NIO与文件通道的技术。 d) 数据集合的使用。 e) 使用函数的参数做为返回值。 四、 类图 a) 类图说明 1. LastMain类:启动last程序。 函数原型 public static void main(String[] args) 函数说明 启动last的主函数。 参数说明 args:用户外部参数。 返回说明 无 异常说明 无 流程原理 无 调用实例 2. LogReader类:读取并解析登录数据。 函数原型 private MappedByteBuffer mappedFile2Buffer(File f) throws Exception 函数说明 把日志文件映射成内存缓冲 参数说明 @param File f日志文件 返回说明 @return MappedByteBuffer 内存映射缓冲。 异常说明 throws 考虑异常 流程原理 调用实例 函数原型 private void readLog(MappedByteBuffer buffer, Vector logins,Vector logouts) 函数说明 读取所有登录日志,并按登入与登出分类放入数据结构 参数说明 MappedByteBuffer buffer 日志文件的内存缓冲 Vector logins 日志的登入数据 Vector logouts 日志的登出数据 返回说明 无 异常说明 @throws 考虑异常 流程原理 调用实例 函数原型 private Vector match(Vector logins,Vector logouts) 函数说明 把登录数据按一个登入一个登出匹配成一条完整的登录过程记录。 参数说明 Vector logins 日志的登入数据 * Vector logouts 日志的登出数据 返回说明 Vector 所有完整的登入/登出记录 异常说明 throws 考虑异常 流程原理 调用实例 函数原型 public void collect()throws Exception 函数说明 得到所有的登录历史数据 参数说明 无 返回说明 无 异常说明 @throws 考虑异常 流程原理 调用实例 3. LogDealer接口:处理登录数据的接口。 函数原型 void deal(Vector logs) 函数说明 登录日志数据的处理接口,目前可以有多种处理方式: 1。直接通过网络处理 2。直接通过JDBC保存到数据库 3。直接通过IO保存到文件,或送往管道。 4。直接通过IO输出到屏幕。[本last指令采用的处理方式] 参数说明 logs 日志 返回说明 无 异常说明 无 流程原理 调用实例 4. LogOutDealer类:登录数据的控制台输出,也是LogDealer的实现类。今后可以直接保存到数据库,或通过网络传递给远程服务器集中处理。 函数原型 public void deal(Vector logs) 函数说明 该类是LogDealer接口的第4种实现类: 直接通过IO输出到屏幕。[本last指令采用的处理方式] 参数说明 logs 日志 返回说明 无 异常说明 无 流程原理 调用实例 5. LogRecord类:读取出来的登录记录的数据抽象类。 成员变量 成员变量说明 username 登录名 userip 登录IP pid 登录进程ID device 登录客户设备类型 visittime 登录登出的时间 6. MatchedRecord类:匹配好的登录记录的数据抽象。 成员变量 成员变量说明 username 登录名 device 设备类型 userip 登录IP logintime 登入时间 logouttime 登出时间 duration 五、 技术技巧提问 a) 使用IO与NIO的优劣。 b) 什么时候使用NIO作为输入/输出。 c) IO,NIO与解码的关系。 d) 程序中是边匹配边显示,还是处理完成以后再一起显示。 六、 效果
(本站课程停更)作者创意豪,开发有CMS,MVC框架,涉猎PHP,Java,Python,JavaScript,对编程颇感兴趣。 在创意豪看来,PHP相对于其他后端编程语言,具有快速高效开发的优势,在中小型企业快速开发自己的软件这方面,PHP无疑是最优的语言。 而Laravel是PHP中最受欢迎的框架,是最早引入Composer的管理方式,PHP的CLI命令行创建方式,也是最早将服务容器,服务提供者,门面,契约这些概念和设计思想,带入框架整体的使用和开发上。Laravel的出现,给PHP的生态发展增强了一些,同时也带动了其他框架的跟进发展。 因此,创意豪推出这个课程,可以让更多PHP开发者,了解和学习到Laravel的先进设计理念。 【简介和安装】Laravel的历史版本Laravel的优势本课程推荐的学习资料下载安装wampwamp新建本地域名的网站下载安装phpstusyphpstudy新建Laravel网站使用Composer国内镜像,下载和运行Laravel运行Laravel的方式 【架构思想】MVC模型图解实战:手写简单的MVC模型Laravel的请求生命周期服务容器的概念和图解依赖注入服务容器的创建和解析两种类型的服务提供者Facades:门面Contracts:契约 【简易CMS:开发CMS的备注模块,实战带动知识点】Laravel开发CMS的备注模块 - 简介下载Laravel和后台HTML模板使用phpstudy配置本地域名路由的方法路由的命名和中间件路由控制器视图生成和运行迁移,设置表字段回滚迁移和重建数据库通过迁移文件,后加字段模型准备备注模块所需的静态页面分拆页面结构CURD增删改查用Tinker新增用Factory新增用create方法新增用save方法新增读取用update方法更新用save方法更新用delete方法删除软删除 【简易CMS:开发CMS的登录登出模块,掌握权限认证】准备登录页面准备登录登出模块所需要的文件和数据表通过路由和代码方式生成后台用户通过tinker方式生成后台用户登录功能登出功能和更换图标整理左边菜单

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧