session的使用
当退出时,去修改数据库里的是否在线状态, 现在有一个问题:当用户直接关闭浏览器后 怎样才能去修改数据库里的字段; 我不想用js,因为浏览器可能存在不兼容的问题,想通过session修改, --------------------编程问答-------------------- session配置cookie使用吧,cookie不设置时间的话,关闭浏览器就自动清除了。 --------------------编程问答-------------------- 不用js我看不到怎么做 --------------------编程问答-------------------- 关闭浏览器后,session会超时失效,就可以以此为判断依据去修改数据库字段。 --------------------编程问答-------------------- 你用HttpSessionListener和HttpSessionAttributeListener试试看,应该可以达到你要的效果 --------------------编程问答-------------------- 3#: 你说的关闭浏览器session会失效,那还得用httpSessionListener是吗? --------------------编程问答-------------------- 那我开着两个浏览器 关了一个你是在线还是不在线?我关机你是在线还是不在线
要是跟你这么说那就情况多了去了
我是没看过什么网站关了浏览器就不在线了 --------------------编程问答-------------------- 用HttpSessionListener,直接关闭浏览器,实际上原来的session处于等待超时的状态。当过了session的timeout时间后,HttpSessionListener里的sessionDestroyed方法被触发,你在这里写更新方法。这个肯定是有延迟的,不可能刚关闭就执行的。
否则只能通过js,兼容问题是因为你写法问题,用jquery什么的就没问题了。当然感觉这比不好,通常情况下,关闭浏览器后重新打开,如果已经登录,应该自动进入首页的。 --------------------编程问答--------------------
这个方法很好,楼主可以借鉴下。 --------------------编程问答-------------------- 关闭浏览器session会失效? 不见得吧 --------------------编程问答--------------------
会的,当你第一次访问该网站是会产生一个session id,只要你不关闭这个网页,这个id是不会改变的。但是关闭浏览器之后,再打开新的浏览器,此时会新生成个id,两者不一样的 --------------------编程问答--------------------
session在服务器中有一定的存在时间的,关闭浏览器只是cookie失效而已,只要你记住了那个sessionId 加在url后面 这样还是原来的会话 --------------------编程问答-------------------- 你用HttpSessionListener监听session失效是有延时,如果追求及时性,这个办法不行,用JS去做浏览器关闭这个不科学,断网、停电、死机等情况他是没法搞的,剩下一种“长连接”。
补充:Java , Java EE