说到Session和Cookie,可能每个人都会在这遇到过坎,傻傻分不清~
我们先来说一下什么是浏览器,什么是服务器:
浏览器是客户端,服务器是服务端,浏览器要浏览页面的话需要发送请求到服务器,
服务器响应后,浏览器方可浏览,浏览器地址里一般使用绝对路径,服务器一般使用相对路径
Session什么时候失效?
当进行了关闭浏览器的操作,再次打开时会发现没有session数据了,这时代表着session使用结束了,但不意味着session被销毁了,
因为session创建和销毁时在服务器端进行的,当浏览器访问服务器就会创建一个JSESSIONID,浏览器通过这个ID来访问服务器中所存储的session,
当浏览器关闭后,再次打开浏览器访问服务器,浏览器已经"失忆"了,没有了之前的JSESSIONID ,所以就找不到服务器端他原来的session。
1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。Tomcat中Session的默认失效时间为20分钟。
可以通过这个来设置时间:session.setMaxInactiveInterval(10); 单位是S。
可以在配置文件中设置:<sessionState timeout="30"></sessionState>
2. 调用Session的invalidate方法。
什么是Cookie:
Cookie:数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端可以清除cookieSession:将数据存储到服务器端,安全性相对好,增加服务器的压力。
Session的实现是基于Cookie,Session需要借助于Cookie存储客户的唯一性标识JSESSIONID,JSESSIONID被清了之后(cookie被删),即使session还存在,但是因为cookie存储的JSESSIONID不在了,也找不到这个Session了
cookie和session的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中