Cookie 与Session 的区别
1、什么叫Cookie,什么叫Session
Cookie:Cookie是保存在浏览器端的以键值对形式存在的一个临时的文件,Cookie默认情况下关闭浏览器就销毁了,实际的作用就是用来保存一些临时的信息。
Session:Session叫做回话,实际上是维持了浏览器和服务器之间的连接状态,在浏览器第一次访问到服务器的时候,服务器就会在服务器的内存中开启一段控制来存放这个浏览器和服务器之间通信的一些信息
e.g
Cookie只是实现Session的一种方式,只要我们浏览器可以向服务器发送SessionID,就可以找到本次回话的Session空间
2、Tomcat中处理Session的具体方式:
2.1、浏览器第一次访问服务器的时候,服务器就会开辟本次会话的session,这个session空间有一个id叫 JSESSIONID -> TOMCAT中叫这个
2.2、放服务器结束处理以后,会将response对象转发给servlet容器进行处理,在servlet容器中,会设置一个cookie键值对,键为JSEESIONID,值为本次会话的session这个id
2.3、浏览器接收到响应以后,发现响应报文中有cookie键值对,于是就将这个cookie键值对保存在浏览器的cookie文件中
2.4、浏览器第二次访问服务器的时候,就会将这个cookie键值对添加到请求头(说白了就是将JSESSIONID带上)
2.5、服务器接收到浏览器的第二次请求的时候,servlet容器就获取到了这个 JSESSIONID:XXXXX,于是就去服务器空间中找到了这个对应的session
2.6、在servlet中,就直接通过request.getSession获取到这个session对象
3、Session和Cookie的生命周期:
cookie:默认情况下浏览器关闭以后,cookie就销毁了
ps:反正浏览器第一次访问的时候都会创建Session,有一个SessionId,所以只要我们能够在cookie中设置这个sessionID,就能访问到其他浏览器(所以造成安全问题)
session:在服务器内session的默认过期时间是30min(即30min以后,session所在的空间就被销毁了)