Session&&Cookie:
一:原理:
Session是一种服务器端的信息管理机制。
是基于Cookie技术实现,重启浏览器后再次访问原有的连接依然会创建一个新的session。因为Cookie在关闭浏览器后会消失,但是原理服务器的Session还在,只有等到销毁的数据才会自动销毁。
Cookie是一种客户端的会话状态的一种储存机制。
二:区别:
1:俩者都是会话技术
但是Session将数据保存在服务器端,Cookie将数据保存在客户端。
2:Cookie有大小限制以及浏览器在存Cookie的个数也有限制,Session没有大小限制
但是因为在服务器端,所以和服务器的内存大小有关联。
3:Cookie有安全隐患,通过拦截本地文件可以找到你的Cookie后进行攻击。
4:Session是保存在服务器端上,会存在一段时间才会消失,但是会增加服务器的压力。
5:生命周期:
Cookie的生命周期是累计的,从创建开始就开始计时,到一定时间,Cookie生命周期结束;
Session 的生命周期是间隔的,从创建时,在一定时间内未访问,Session生命周期被销毁,但是,在这个时间内,访问过,就会重新计算Session的生命周期。关机会造成Session生命周期结束,但是对Cookie没有影响。
6访问范围:
Cookie为多个用户浏览器共享;Session为一个用户浏览器独享。
三:面试:
1:Session 产生的Session_ID放在Cookie中,如果用户把Cookie禁止掉,Session是否能够使用?
禁止Cookie后,Session依然可以使用,可以通过其他方式来获取Session_ID。
比如:
可以放置在URL的后面
以表单形势提交到服务器端,从而是服务器端了解客户端的状态。
2:Session为什么比Cookie更安全。
Session_ID是加密的,第二次session_start的时候,前一次的sessionID就没有用了。Session过期时,session_ID也会失效。所以短时间内破解加密的sessionID很难,因为session是针对某一次通信的,一旦会话结束,session也就随着会话结束而消失,而cookie可以通过拦截本地文件找到你的cookie,然后进行攻击,安全性差。
3:关闭session:
1:关闭Tomcat/服务器
2:重启web应用
3:session过期(默认30min)(可以在工程的web-xml文件中进行配置)
4:手动session.invalidate()
5:session的生命周期:
创建:第一次执行Request.getSession时创建
(客户端访问服务器端,执行到该方法,会看有没有属于该客户端的session区域,有,不创建,没有,创建新的)
销毁:服务器关闭、Session过期、手动销毁