我要给一个网站的账号和密码加入到cookie或者session中,这样下次再打开的话用户名就会直接显示在输入框中,省去再去输入的麻烦,但是这里面我有个问题想问一下,
1.我的cookie是这样写的啊,Cookie cookie = new Cookie("LoginUserName", username),这样的话,我下次打开网页时候检查一下cookie里面是否有这个username,有的话就直接显示出来,检查时好像是从cookie数组中循环检查,但是我觉得:因为我的Cookie中是LoginUserName,每个cookie不是都是这个名字吗,这样新用户输入信息不是会覆盖以前的信息吗?也就是说cookie数组里面不是只有一个用户吗?那为什么还要循环遍历呢?
2.session也是一样,我想通过session来控制相同用户不能同时登陆两次,这样我就需要把所有用户的信息存到session中,然后在登陆时检查session,这里面又会出现问题了,session会覆盖,这样就无法得到所有用户的信息了。另外,还有就是用户信息存放的集合中的元素要随着session产生而增加,要随着session消失而减去,这个又怎么实现呢?这两个问题请大家详细的给我讲讲,谢谢
1.我的cookie是这样写的啊,Cookie cookie = new Cookie("LoginUserName", username),这样的话,我下次打开网页时候检查一下cookie里面是否有这个username,有的话就直接显示出来,检查时好像是从cookie数组中循环检查,但是我觉得:因为我的Cookie中是LoginUserName,每个cookie不是都是这个名字吗,这样新用户输入信息不是会覆盖以前的信息吗?也就是说cookie数组里面不是只有一个用户吗?那为什么还要循环遍历呢?
2.session也是一样,我想通过session来控制相同用户不能同时登陆两次,这样我就需要把所有用户的信息存到session中,然后在登陆时检查session,这里面又会出现问题了,session会覆盖,这样就无法得到所有用户的信息了。另外,还有就是用户信息存放的集合中的元素要随着session产生而增加,要随着session消失而减去,这个又怎么实现呢?这两个问题请大家详细的给我讲讲,谢谢
session是记录在服务器和客户端的,但是由于session是会话作用域,用session来实现自动登录貌似不可能吧。楼主上网上搜下Cookie的详细使用就可以了。
所以如果用户在浏览器中把cookie给禁用了,session也失效了,因为读不到对应的session id。这种情况下如果还想用session只能用encodeURL(),所以api中建议我们为了程序的健壮性,要用encodeURL()的方法
你看看怎么可能覆盖呢。
每次都是重新 new 一个cookie对象的,不同的人在同一台机器上面登录多少次就有多少个cookie。
那不同机器就不用说了
你说的那个操作可能实现不了
给你个思路吧,在数据库中增加一个状态,是否登录(0未登录,1已登录),每个用户登陆的时候先查询数据库此用户是否已登录,如果是就不让登陆,如果否就将状态改为已登录,当用户注销时再将状态改回未登录,而session的作用一般是用户登录时将用户信息存入session,在用户点击一些有权限的页面时判断session中是否有用户信息,如果没有强制跳转到登陆页面,让用户先登录.
是所有的cookie组成一个数据结构,
一起存在客户端的。
所以取得Cookie的时候是一个数组,
然后用名字匹配要取的值。在这里,循环的意义是:
找到名字是“LoginUserName”的cookie,
然后再取出这个“用循环找到的名字叫‘LoginUserName’”的cookie的值新用户输入的时候,新的就把旧的覆盖掉了,
但是,存的时候还是所有cookie组成一组存,
所以还是要循环。硬要找个类比的话,就好像list里面放了很多map
每次都要循环这个list,找到key是“LoginUserName”的map,
然后再取得map的其他值
这个list就是cookie[],那个map就是各个cookie关于session,他的生命周期并不保证很精确的表示用户在线或者离线,
有时候客户离线了,可是服务器那边的session还活者,
所以用11楼的方法比较好。
也可以用到session,
就是如果用户直接关掉浏览器的话,就接收不到离线的消息了。
这时候,可以监听session的unbound事件,
就是当服务器注销session的时候,更新数据库中的用户状态good luck
function window.onbeforeunload(){
//这里跳转到action执行改变用户登陆状态的方法
}如果不行改为异步(dwr)试试具体操作我没有试过
那就只能用ajax做个保姆时不时的报平安了good luck