1、Cookie
说到Cookie,得先谈的HTTP协议,HTTP协议是无状态协议,就是当你发起HTTP
请求断开后,再次发起HTTP请求,与开始一样。也就是说状态不会改变。
-
Cookie的存在就是为了记录HTTP请求的状态,Cookie是一段字符串,由Key和Value
构成,用于存储在客户端。常用于用户的登录,如当用户登录成功后,服务端返回一段Cookie
当用户下次发起HTTP请求的时候,会把Cookie发给服务器,服务器检查到Cookie后
就直接跳转到用户登录后的页面无需登录了。 -
Cookie记录的信息有限,一个Cookie最多之能有4096的字符,而且Cookie保存的内容
仅支持字符。 -
Cookie也不安全,别人可以窃取用户的Cookie用于登录用户的登录用户的账户。
2、Session
先说SessionId,当用户发起一段HTTP请求的时候,服务器会生成一段用户特有的字符串作为Key
存储在HashTable中,这个Key就是SessionId,而Value就是记录用户与服务器的会话信息(用户信息,操作)等。
而在HashTable中的这个记录就叫Session。
Session常用于购物车,当用户每次请求的时候会发生将Session发送给服务器,
服务器会对SessionId进行匹配。然后更新HashTable。
-
Session的实现
-
第一种:就是依赖于Cookie的实现,就是上面我们所说的那种,在这里我就不赘述了。
-
第二种:URL重写。这种实现方式,是通过在请求的URL后面后缀JESSIONID=xxx这种方式将JESSIONID传递给客户端。
-
第三种:隐藏的表单域。就是在FORM表单中,设置一个隐藏域,将JESSIONID放置其中,一并发送给服务器端。
-
-
Session保存到服务器上,比Cookie安全,但是会增加服务器的压力
-
session的结构,Session内部采用CurrentHashMap来存储的attribute
可以参考着篇文章关于Cookie与Session的应用-登录验证
https://blog.csdn.net/qq_36781505/article/details/88541057