最后登录时间记录的一点思考
2013-07-29 19:54
260 查看
刚做的时候感觉这最后登录时间根本不在设计的范围内,也许也只有我这种初出茅庐的人才会这么想吧。没有做过设计,实习了一年,刚毕业就辞职了(同学都惊呆了,说我二了!),敲代码也只是限于服务层,控制层,再底下估计人家包装好了你看也甭想看。额。。每次写笔记都会有一段感慨!!
最后登录时间我设计的时候是在用户表里的只有一个字段,网上有人说设计两个字段来做件事情,我就不相信了还非得两个字段来做,麻烦。当然网上也有很多方法来设计这个登陆时间,怎么说呢测试都失败了。我还是自己想吧但人家的思路可以借鉴。
首先最后登录时间是用户登录时的时间,这个毫无疑问!但这时我犯了一个自认为愧对学习了一年web开发的错误。
问题:
登录--成功---user对象放入session域---set最后登录时间为当前时间---update---跳转到页面!!
在红色的部分就是问题的错误所在。分析,用户对象只有一个,修改了最后登录时间把值传到页面后这个最后登录时间就成了当前时间。这个错误太二了。
思路:
用户创建后要保存到session中因此我们就会想到用session监听器来做这件事,session创建得到日期,session结束保存更新结果。OK思路有了!
解决办法:
实现HttpSessionAttributeListener接口来监听session的创建销毁和修改,因为这个接口可以接收session中属性的改变。主要做的东西在attributeRemoved这个方法中。我还在用户类中放入flagLastLoignTime作为临时属性,不生成映射。
用户登录后给临时属性赋值保存在sesssion中,当session过期时就会执行attributeRemoved方法,当然得判断一下是不是移除用户对象,如果移除的是用户则通过se.getValue得到移除的这个对象。注意一下当注销登录可以从session中获到对象,但session失效是不行的,所以必须用se.getValue来获得移除的这个对象即用户对象。然后得到用户的ID,和刚赋值进去的临时变量更新数据库吧。
好吧!!一个问题解决一下午!!这进度哎!!各种不给力!
最后登录时间我设计的时候是在用户表里的只有一个字段,网上有人说设计两个字段来做件事情,我就不相信了还非得两个字段来做,麻烦。当然网上也有很多方法来设计这个登陆时间,怎么说呢测试都失败了。我还是自己想吧但人家的思路可以借鉴。
首先最后登录时间是用户登录时的时间,这个毫无疑问!但这时我犯了一个自认为愧对学习了一年web开发的错误。
问题:
登录--成功---user对象放入session域---set最后登录时间为当前时间---update---跳转到页面!!
在红色的部分就是问题的错误所在。分析,用户对象只有一个,修改了最后登录时间把值传到页面后这个最后登录时间就成了当前时间。这个错误太二了。
思路:
用户创建后要保存到session中因此我们就会想到用session监听器来做这件事,session创建得到日期,session结束保存更新结果。OK思路有了!
解决办法:
实现HttpSessionAttributeListener接口来监听session的创建销毁和修改,因为这个接口可以接收session中属性的改变。主要做的东西在attributeRemoved这个方法中。我还在用户类中放入flagLastLoignTime作为临时属性,不生成映射。
public void attributeRemoved(HttpSessionBindingEvent se) { if("user".equals(se.getName())){ User user = (User) se.getValue(); String hql = "update User u set u.lastLoginTime=? where u.id=?"; ApplicationContext applicationContext = SpringInit.getApplicationContext(); UserService userService = (UserService) applicationContext.getBean("userServiceImpl"); userService.update(hql,user.getFlaglastLoginTime(),user.getId()); } }
用户登录后给临时属性赋值保存在sesssion中,当session过期时就会执行attributeRemoved方法,当然得判断一下是不是移除用户对象,如果移除的是用户则通过se.getValue得到移除的这个对象。注意一下当注销登录可以从session中获到对象,但session失效是不行的,所以必须用se.getValue来获得移除的这个对象即用户对象。然后得到用户的ID,和刚赋值进去的临时变量更新数据库吧。
好吧!!一个问题解决一下午!!这进度哎!!各种不给力!
相关文章推荐
- Win7系统查看最后登录时间的方法 win7电脑记录用户登录时间的查看
- 关于python以及numpy运行速度的一点思考和记录
- 03-使用cookie记录上次登录的时间
- 脚本实现记录所有登录用户的信息,包括用户名、登录时间和登录位置
- 查看Exchange用户最后登录时间
- 实现“记录用户登录时间和退出时间,同时记录用户IP,并且要记录用户IP对应的省和城市地址”
- 输错三次禁止登陆,15分钟后才能继续。用数据库记录ErrorTimes,最后出错时间lastErrorDateTime。
- 框架重构:记录创建人、最后修改人、创建时间、最后修改时间
- java 使用cookie记录用户上一次访问的时间 记住 用户的 登录名
- 输错三次禁止登陆,15分钟后才能继续。用数据库记录ErrorTimes,最后出错时间lastErrorDateTime。
- Mysql update语句赋值嵌套select,更新和查询同一张表,必须取别名;用例:更新指定游戏服务器最后启动记录的结束时间
- 关于程序的运算时间复杂度的一点思考
- 记录并显示网页的最后修改时间
- Win7系统查看最后登录时间的方法
- 取得每个用户登录次数和最后登录的时间
- 按照时间和登录ip地址来记录不同用户的历史命令的脚本——shell(1)
- 桌面文本时钟TXTCLOCK- 记录系统登录,关机时间
- 记录并显示网页的最后修改时间
- CentOS下查看最后登录的用户信息以及LOG记录
- 安卓跳转登录后如何记录之前的操作的问题思考