会话技术
概念:
指用户打开一个浏览器,访问服务器开始,不管用户点击多少个链接,访问多少资源,直到浏览器关闭,整个过程我们称为一次会话。
分类:
客户端会话技术Cookie
1、程序把每个用户的数据以Cookie的形式保存在浏览器上,当用户在次访问服务器的话,浏览器会将请求连同Cookie一起发送给服务器。
2、Cookie具有不可跨域的特点,当访问该网站的时候浏览器只会把当前网站上的Cookie发送过去
3、创建的Cookie默认情况下是会话级的,当用户退出浏览器的时候会被删除。如果需要把Cookie写在硬盘上,需要调用setMaxAge()方法,以秒为单位。没有删除的方法,要删除只需把Cookie的有效时间设为0。
服务端会话技术Session
1、Session把的数据保存在服务器端,在一次会话的多次请求间共享数据。
2、Http协议是无状态的,Session不能根据Http连接来判断时候为同一用户,所以服务器会向用户发送一个名为JSESSIONID的Cookie,他的值是Session的id。该Cookie的maxAge默认为-1,也就是当前浏览器使用,关闭则删除。
3、Session的默认失效时间为30分钟,可以通过调用setMaxInactiveInterval()来设置,单位秒。
Cookie和Session的区别
从存储方式上:Cookie只能存储字符串,最大4kb,Session可以存储任何类型的数据。
从隐私安全上:Cookie存储在浏览器上,对客户端是可见,消息容易泄露出去。Session存储在服务器上,对客户端时透明的,不存在安全问题。
从有效期上:Cookie保存在硬盘中,可以通过设置maxAge属性设置,即使关闭了浏览器,Cookie还是存在。Session保存在服务器上,设置maxInactiveInterval属性值来设置有效期,Session还依赖于名为JSESSION的Cookie,当浏览器关闭后,Session也就失效了。
从对服务器端的负担上:Cookie是保存在客户端的,不占用服务器的资源。而Session则保存在服务器,并发访问的用户多时,会消耗大量的内存。