Session的概述
什么是Session
Session称为是一次会话,Cookie将用户产生的私有数据保存到浏览器端,Session将用户产生的私有数据保存到服务端。注意:一个浏览器独占一个Session对象。因此,在需要保存用户数据时候,服务程序可以将用户数据写到session对象中,当用户使用浏览器访问其他程序时,其他程序可以从用户的Session中取出该用户的数据,为用户服务。
为什么有Cookie还要有Session
Cookie局限性:
Cookie保存的数据是有个数和大小的限制;
数据保存在客户端浏览器上(相对不是很安全);
Session优势:
Session在数据的保存时,没有个数和大小的限制
数据是保存到服务器上(相对比较安全)
Session如何保存用户数据
Session对象由服务器创建,开发人员可以随意调用request对象的getSession方法得到Session对象。
Session的实现原理
Session的原理分析:
服务器是如何实现一个Session为一个用户浏览器服务的?
Session的实现原理:
基于Cookie的,基于Cookie回写了一个Session的ID。
Session作为域对象来存取数据
Session作为域对象的API
向Session中存入数据
向Session域中获取数据
从Session域中移除数据
Session作为域对象的作用范围
Session作为域对象,作用范围就是一次会话的范围。一次会话,指的是用户打开浏览器点击多个超链接,访问服务器资源,到最后关闭浏览器的过程。
Servlet的数据访问范围的总结
Servlet的域对象的总结
请求范围(ServletRequest)
何时创建金和销毁的:
创建:当用户向服务器发送一次请求,服务器创建一个request对象。
销毁:当服务器对这次请求做出了响应,服务器就会销毁这个request。
如何存取数据:
存数据:
void setAttribute(String name,Object value);
取数据:
Object getAttribute(String name);
作用范围:
一次请求。(转发就是一次请求)
会话范围(HttpSession)
何时创建金和销毁的:
创建:服务器端==第一次调用getSession()==方法的时候。
销毁:三种情况
Session过期,默认的过期时间30分钟。(可以在web.xml中配置timeout时间)
非正常关闭服务器。(直接销毁Session)
正常关闭服务器。(Session会被序列化)
手动调用Session.invalidate();
如何存取数据:
存数据:
void setAttribute(String name,Object value);
取数据:
Object getAttribute(String name);
作用范围:
一次会话(多次请求)
应用范围(ServletContext)
何时创建金和销毁的:
创建:服务器端启动的时候创建,为每个web项目创建一个单独ServletContext对象。
销毁:在服务器关闭的时候,或者项目从服务器中移除的时候。
如何存取数据:
存数据:
void setAttribute(String name,Object value);
取数据:
Object getAttribute(String name);
作用范围:
整个应用。