前言:大家可能都清楚Web三大概念:cookie、session、application,因此对session也并不陌生,此篇博客将主要针对于session以及session的整合做出介绍
简介:Session与cookie功能效果一样,Session与Cookie的区别在于Session是记录在服务端的,而Cookie是记录在客户端的
举例:当访问服务器否个网页时,会在服务器端的内存里开辟一块新的内存,这块内存就叫做session,而这块内存是跟浏览器关联在一起的,这个浏览器指的是当前访问的浏览器窗口,换句话说就是只允许当前这个session对应的浏览器访问,即使在同一个机器上新启的浏览器也是无法访问的,而另外一个浏览器如果也需要记录session的话,就会再启一个新的session
原理:HTTP协议是非连接性的,获取到当前浏览器数据之后关闭浏览器,链接就断开了,没有任何机制去记录取出后的信息 ;当访问同一个网站的另外一个页面时,同样上个页面的信息将无法读取,所以需要有一种机制让页面知道原来页面的session内容
解决:当访问一个页面时给浏览器创建一个唯一标识,同时也赋给创建的session同样的标识,这样就可以在打开同一个网站的第二个页面时获取到第一个页面中session保留下来的对应信息,这个号码也叫sessionID
实现(传递方式):1)通过cookies实现:因为cookie有临时的,也有定时的,临时的就是当前浏览器关掉即消失,也就是说session本来就是当浏览器关闭即消失的,所以把session的id 放在cookie里,当允许浏览器使用cookie时,session就会依赖于cookies。2)通过URL重写:在浏览器不支持cookies情况下通过url重写来实现,通过response.encodeURL()方法,这个方法第一个作用是支持转码,第二个作用在encodeUTL()后面跟上sessionID后,及时在禁用cookie的浏览器中也可以使用session,所以在cookies不能用情况下想用session就必须加上encodeURL(),如:
out.println("