Cookie&Session
Cookie的分类
默认级别的Cookie
指的是没有设置有效时间的Cookie,默认的情况下只要关闭了浏览器,Cookie也会被销毁。(Cookie存在于浏览器的内存中,当关闭了浏览器Cookie就销毁了)。
持久级别的Cookie
指的是有有效时间的Cookie,这种Cookie的内容不是保存在浏览器的内存中,将Cookie的内容保存(持久化)到硬盘上。这个时候,关闭浏览器,再次打开浏览器会加载硬盘上的文件,从而Cookie中的数据就不会丢失。
Cookie常用API
构造方法

Cookie(String name,String value);
其他的方法

获得Cookie的名称的方法

获得Cookie的值的方法

设置Cookie的有效域名

设置Cookie的有效路径

设置Cookie的有效时长
记录用户上次访问时间Demo


将以上代码中的默认Cookie改为持久Cookie

Cookie的使用细节总结
- 一个Cookie只用标识一种信息,至少含有一个标识该信息的名称和值。
- 一个web站点可以给一个浏览器发送多个Cookie。一个web浏览器可以存储多个web站点的Cookie。
- 浏览器一般只允许存放300个Cookie,每个站点最多可以存放20个Cookie,每个Cookie的大小限制为4KB(老版本浏览器)。-----浏览器存放的Cookie的大小和个数是有限制的。
- 如果创建了一个Cookie,并发送到浏览器,默认情况下它是一个会话级别的Cookie。用户退出浏览器就被删除。如果希望将这个Cookie存到磁盘上,需要设置有效时长调用setMaxAge(int maxAge)方法,以秒为单位的。
- 需要手动删除持久性Cookie,可以将Cookie的有效时长设置为0.必须注意:删除Cookie时候,path必须一致,否则无法删除。
Session的实现原理:
基于Cookie的,基于Cookie回写了一个Session的ID。

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中配置)。
非正常关闭服务器。(正常关闭服务器—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);
作用范围
作用范围:整个应用

浙公网安备 33010602011771号