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);

作用范围

作用范围:整个应用

posted @ 2019-09-21 06:42  搬砖的小伙儿  阅读(135)  评论(0)    收藏  举报
Fork me on GitHub