状态控制
http的状态控制主要有两种方式,一是cookie,一是session。二者最大的不同在于cookie是存储在客户端的内容,session是存储在服务器端的内容。
Cookie:
cookie是用于维持服务端会话状态的,通常由服务端写入(Set-Cookie),在后续请求中,供服务端读取。 cookie分为两类:会话cookie是一种临时的cookie,它记录了用户访问站点时的设置和偏好,关闭浏览器,会话cookie就被删除了 ;持久cookie存储在硬盘上,(不管浏览器退出,或者电脑重启,持久cookie都存在), 持久cookie有过期时间
cookie存储与硬盘上,不同的浏览器、操作系统对于cookie的存储路径不一样,但几乎所有浏览器都可以运行用户禁止使用cookie。cookie作为一种用户信息存储在本地硬盘中,本来就具备一定的不安全性,即使现有的加密技术很厉害,但是无法让人获取还是最安全的一种方式。
seesion:
在用户登录服务器的时候,服务器会对于同一个用户分配一个全球唯一的seesionID来存储与用户相关的一些信息。从描述中可以看出,session的实现应该是一个hashmap,在tomcat服务器中部署的服务的session存储方式是ConcurrentHashMap。
保存session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。由于cookie可以被人为的禁止,必须有其它的机制以便在cookie被禁止时仍然能够把session id传递回服务器,经常采用的一种技术叫做URL重写,就是把session id附加在URL路径的后面,附加的方式也有两种,一种是作为URL路径的附加信息,另一种是作为查询字符串附加在URL后面。网络在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。
session不会随着用户关闭浏览器而消失,而在用户提出退出登录或者请求关闭session的时候或者session超时才会消失。因此如果你在访问某个页面,比如淘宝,关闭浏览器后再次打开会发现还是登录状态。一般较大公司的session会将session的超时时间设置较长,比如半天或者两个小时。如果服务器内存容量较小,则应考虑将session超时时间设置成短时间。
参考内容:
1.http://www.cnblogs.com/zhaoYuQing-java2015/p/4621384.html
2.http://www.sxrczx.com/pages/www.cnblogs.com/tankxiao/archive/2013/04/15/2848906html.html