会话技术的Cookie、Session介绍及Servlet域对象总结
会话技术的概述
- 用户打开一个浏览器,点击多个超链接访问服务器的web资源,然后关闭浏览器,整个过程成为一次会话。
- 每个用户和服务器进行交互过程中,产生一些各自的数据,程序想要把这些数据进行保存,就需要使用会话技术。
会话技术的实现原理
- cookie:cookie是客户端技术,程序把每个用户的数据以cookie的形式存到各自的浏览器中。当用户使用浏览器再次访问服务器中的web资源的时候,就会带着各自的数据过去。这样,web资源处理的就是用户各自的数据了。
- session:session是服务器端技术,利用这个技术,服务器在运行的时候为每一个用户创建一个独享的session对象。由于session为用户浏览器独享,所有用户在访问服务器的时候,可以把各自的数据放在各自的session中,当用户再次访问服务器中的web资源时,其他web资源再从用户各自的session中取出数据为用户服务。
Cookie分类
-
默认级别的Cookie
指没有设置有效时间的Cookie,默认的情况下只要关闭了浏览器,Cookie也会被销毁。(Cookie存在于浏览器的内存中,当关闭了浏览器Cookie就销毁了。) -
持久级别的Cookie
指有有效时间的Cookie,这种Cookie的内容不是保存在浏览器的内存中,而是保存在本地硬盘上。 -
Cookie的使用细节
- 一个cookie只用标识一种信息,至少含有一个标识该信息的名称和值;
- 一个web站点可以给一个浏览器发送多个Cookie,一个浏览器可以存储多个web站点的Cookie;
- 浏览器存放的cookie的大小和个数是有限制的;
- 默认被创建的cookie是会话级别的,关闭浏览器则摧毁;
- 需要手动删除持久性的Cookie,可以将有效时长改为0,注意:path需一致,否则无法删除。
Session概述
- Session与cookie的区别
-
Session没有个数和大小的限制
-
数据是保存在服务器上的(相对安全)
-
- Session如何保存用户数据
Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到Session对象。 - Session的实现原理
是基于Cookie的,基与Cookie回写了一个Session的id。 - Session做为域对象存取数据
- 存入:SetAttribute
- 取出:GetAttribute
- 移除:RemoveAttribute
- 作用范围:一次会话。指的是用户打开浏览器访问服务器资源,到最后关闭浏览器的过程。
Servlet的数据访问范围的总结
- Servlet域对象的总结
- 请求范围(ServletRequest)
- 何时创建和销毁的:请求创建,响应销毁。
- 如何存取数据:传值类型为object。
- 作用范围:一次请求。
- 会话范围(HttpSession)
- 何时创建和销毁的:服务器端第一次调用getSession()方法即创建。销毁:①Session过期,默认过期时间为30分钟;②非正常关闭服务器;③手动调用session.invalidate()。
- 如何存取数据:传值类型为object。
- 作用范围:一次会话。
- 应用范围(ServletContext)
- 何时创建和销毁的:服务器启动时创建,为每个web项目创建一个单独的ServletContext对象。销毁:服务器关闭时,或者项目从服务器中移除。
- 如何存取数据:传值类型为object。
- 作用范围:整个web项目。
- 请求范围(ServletRequest)