cookie和session都是会话跟踪技术。
Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份
1.什么是会话跟踪技术?
会话跟踪常用的有两种技术:Cookie和Session,并且Session底层依赖于Cookie。<br /> HTTP是无状态协议,也就是没有记忆力的协议,每个请求之间无法共享数据。这就无法知道会话什么时候开始,什么时候结束,也无法确定发出请求的用户身份。这说明需要使用额外的手段来跟踪会话!<br /> 在一个会话中共享数据即会话跟踪技术
一、session(存服务器、占内存、)
1.什么是Session会话?
1.session就是一个接口(HttpSession).
2.Session就是会话,它是用来维护一个客户端个服务器之间关联的一种技术。
3.每个客户端都有一个自己的session会话。
4.经常用来保存用户登录之后的信息
2.创建和获取Session
request.getSession()
第一次调用时:创建Session会话
之后调用都是:获取前面创建好的Session会话对象。
- session是另一种记录客户状态的机制。session保存在服务器上。
- 客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是session。
- 客户端浏览器再次访问时只需要从该session中查找该客户的状态就可以了。
- 当用户通过浏览器和服务器建立一次会话后,sessionID就会随响应信息返回存储在基于窗口的cookie中,那就意味着只要浏览器没有关闭,会话没有超时,下一次请求时这个sessionID又会提交给服务器让服务器识别用户身份。
- session话中可以为用户保存信息。当然,和用户会话相关的其他信息(除了会话ID)也可以存在cookie方便进行会话跟踪。
二、cookie(存客户端、不安全、存放数据量有限)
1. 什么是Cookie?
从编程的角度来讲,Cookie其实是一份小数据,是服务器响应给客户端,并且**存储在客户端**的一份小数据。**下次客户端访问服务器时,会自动带上这个Cookie。**服务器通过Cookie就可以区分客户端。
Cookie是HTTP协议的规范之一,它是服务器和客户端之间传输的小数据。
首先由服务器通过响应头把Cookie传输给客户端,客户端会将Cookie保存起来。
当客户端再次请求同一服务器时,客户端会在请求头中添加该服务器保存的Cookie,发送给服务器。
Cookie就是服务器保存在客户端的数据!
Cookie就是一个键值对!!!cookie是Web服务器发送给浏览器的一块信息。
浏览器会在本地文件中给每一个Web服务器存储cookie。以后浏览器在给特定的Web服务器发请求的时候,同时会发送所有为该服务器存储的cookie。
(cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户的状态,就使用response向客户端浏览器颁发一个cookie。客户端浏览器会把cookie保存起来。当浏览器再次请求该网站时,浏览器就会把请求地址和cookie一同给服务器。服务器检查该cookie,从而判断用户的状态。服务器还可以根据需要修改cookie的内容。)2.cookie有两种
- 一种是基于窗口的,浏览器窗口关闭后,cookie就没有了;
- 另一种是将信息存储在一个临时文件中,并设置存在的时间。
在使用cookie时要注意几点:
首先不要在cookie中存放敏感信息;(不安全)
其次cookie存储的数据量有限(4k),不能将过多的内容存储cookie中;
再者浏览器通常只允许一个站点最多存放20个cookie。
3.服务器获取Cookie
Cookie[] cookies = req.getCookies();
三、不同点
- session对象是在服务器内存中的,而基于窗口的cookie是在客户端内存中的。
- cookie不是很安全,别人可以分析存放在本地的cookie,进行cookie欺骗;session会在一定时间内保存在服务器上,当访问增多,会占用服务器性能
- cookie保存数据不能超过4k,很多浏览器都限制一个站点最多存放20个cookie