当前位置: 代码迷 >> Java Web开发 >> session和cookie的有关问题
  详细解决方案

session和cookie的有关问题

热度:91   发布时间:2016-04-17 15:51:41.0
session和cookie的问题
1.服务器端的sessionid传给客户端是存在cookie中吧,那cookie存在什么地方,
有时好像并非是硬盘上
2.session是在什么时候创建的,   具体的时间段
3.为什么有时服务器重启,   还能获得原来的session


------解决方案--------------------
1.若服务器端会把cookie作为http响应头传到浏览器, 若cookie未设置有效时间, 则会存在浏览器的进程的一块内存中, 若有效时间比当前系统时间早,则无效, 若有效时间比当前系统晚, 则存在客户端cookie文件夹中.
2.客户端访问服务器端时, 服务器端根据请求的内容找到对应的页面, 并将其编译成servlet (jsp其实就是servlet), 若http请求中无sessionid, 或根据此session点在内存中无法找到对应的session, 都在这个编译成的servlet中加上request.getSession(true); 这一步才是创建session的具体地方.
3.web容器可以对session进行持久化, 也就是将内存的session变为硬盘的数据, 大量并发的时候就得做这个事, 容器重启时会读取硬盘上session.
------解决方案--------------------
1.服务器端的sessionid传给客户端是存在cookie中吧,那cookie存在什么地方,
有时好像并非是硬盘上
2.session是在什么时候创建的, 具体的时间段
3.为什么有时服务器重启, 还能获得原来的session


///

1.SessionId不一定是拷cookies cookie只是一种方式 url重写等方式也可以实现

cookies 当然可以只在内存中存活,不写到硬盘

2. 一般请求发送到jsp的时候 就会创建session
除非你在jsp声明不用session

3.服务器可以配置session的持久化 就是吧session数据放到硬盘里
下次启动后 还可以拿到上次的session

------解决方案--------------------
1,假如客户端的浏览器支持cookie的时候,cookie存在浏览器中,同时在客户端的内存里面会存一份备份,当我们设置COOKIE的时候,服务器会反馈给IE一个指令。IE通过这个网络指令生成COOKIE并存放 ,在特定的时候会取得这个这个信息如在访问这个站点并且COOKID有效的时候

2,一般的情况下,用户每次登陆的时候系统容器会为用户生成唯一标志用户的SEESIONID,用于区别用户,在用户退出系统的时候销毁

3,session的存活期是浏览器没有关之前


4.COOKIE 可设置并在本地保留 明码信息
SESSION 在IE不关闭并服务器不超时 只有SESSIONID
当如果想让用户下次登入网站不需要输入用户名或者密码的时候就只能用COOKIE,
因为他可以保留相当长的时间(在COOKIE记录被删除或者失效日期之前)
而SESSION就不可以,他不会保留太长时间,而且IE在关闭后就自动清除了SESSIONID记录
在下次登入的时候会请求新的SESSIONID
而服务器想通过用户个人变量校验用户的状态的时候,就不能用COOKIE
  相关解决方案