1. 会话技术
就是用户在使用浏览器浏览界面的时候,去访问多个页面后一次性关闭浏览器,这个过程叫会话,学习会话技术就是在客户端与服务器进行交互的时候为了能更好的保存数据。在java中会话技术只有Cookie和Session
2. Cookie技术
Cookie是客户端技术,程序把每个用户的数据以cookie的形式保存到各自浏览器中。当用户使用浏览器再次访问服务器中的web资源的时候,就会带着各自的数据过去。这样,web资源处理的就是用户各自的数据了。
3. Cookie的分类
Cookie默认时,是指没有设置有效时间,只要一关闭浏览器,Cookie也就会被销毁;在设置有效的时间的Cookie,Cookie的内容不是保存在浏览器的内存中,将Cookie的内容保存(持久化)到硬盘上。这个时候,关闭浏览器,再次打开浏览器会加载硬盘上的文件,从而Cookie中的数据就不会丢失。
4. Cookie的方法
构造方法: Cookie(String name, String value)
获得Cookie的名称的方法: getName()
获得Cookie的值的方法: getValue()
设置Cookie的有效域名: getDomain(String pattern)
设置Cookie的有效路径: getPath(String uri)
设置Cookie的有效时长: setMaxAge(int time)
5. 使用Cookie的注意事项
1. 一个Cookie只用标识一种信息,至少含有一个标识该信息的名称和值。
2. 一个web站点可以给一个浏览器发送多个Cookie。一个web浏览器可以存储多个web站点的Cookie。
3. 浏览器一般只允许存放300个Cookie,每个站点最多可以存放20个Cookie,每个Cookie的大小限制为4KB(老版本浏览器)。-----浏览器存放的Cookie的大小和个数是有限制的。
4. 如果创建了一个Cookie,并发送到浏览器,默认情况下它是一个会话级别的Cookie。用户退出浏览器就被删除。如果希望将这个Cookie存到磁盘上,需要设置有效时长调用setMaxAge(int maxAge)方法,以秒为单位的。
5. 需要手动删除持久性Cookie,可以将Cookie的有效时长设置为0.必须注意:删除Cookie时候,path必须一致,否则无法删除。
6. Session技术
Session是服务器端技术,服务器在运行时为每一个用户的浏览器创建一个独享的Session对象。由于Session为用户浏览器独享,所有用户在访问服务器的时候,可以把各自的数据放在各自的Session中,当用户再次访问服务器中的web资源的时候,其他web资源再从用户各自的Session中取出数据为用户服务,当用户使用浏览器访问其他程序时,其他程序可以从用户的Session中取出该用户的数据。
7. Session的范围
Session的作为域范围,就是一次会话的范围。
Session的请求范围(ServletRequest):一次请求。
创建:当用户向服务器发送一次请求,服务器创建一个request对象。
销毁:当服务器对这次请求作出了销毁响应,直到服务器销毁request对象。
Session会话范围(HttpSession):一次会话(多次请求)。
创建:服务器端第一次调用getSession()方法的时候。
销毁:三种情况。
* Session过期,默认的过期时间30分钟(web.xml中配置)。
* 非正常关闭服务器。(正常关闭服务器—session会被序列化)。
* 手动调用session.invalidate();
Session的应用范围(ServletContext):整个应用。
创建:服务器启动的时候创建,为每个web项目创建一个单独ServletContext对象。
销毁:服务器关闭的时候,或者项目从服务器中移除的时候。
8. Session的方法
存入数据: setAttribute(String name, Object value)
获取数据: getAttribute(String name)
移除数据: removeAttbute(String name)
9. Cookie和Session的区别
Cookie具有局限性,因为Cookie保存的数据大小和数量有限制,且只能保存在浏览器中,不安全;而Session没有限制大小和数量,数据保存在数据库中,相对安全。