session的状态或者生命周期

简介: session的状态或者生命周期

一、session的创建

1、当浏览器首次访问服务器资源的时候,服务器会自动的创建一个session,然后会将这个session存到cookie中,响应回浏览器。该cookie的key ,默认为:JSESSIONID
2、当浏览器下一次来访问服务器的时候,会默认在请求头信息中带上这个cookie,此时服务器可以通过这个默认的cookie,找到对应的服务器资源,最终响应给浏览器。
3、所以说,session最终还是要依赖cookie来实现的。
4、关于session的几个API方法

获取当前会话下的session信息,注意:如果session已经存在,则服务器不会在创建默认的session,如果不存在,则会创建

request.getSession();

获取当前会话下的session信息,如果为false,则表示,如果没有session,则不会创建,如果为true,则和上面描述一致

request.getSession(boolean var1);

获取session的JSESSIONID

session.getId();

二、session销毁的四种方式:

1、强制销毁:直接调用 session.invalidate() 方法
2、session自动超时:30分钟默认
3、设置session的最大活跃时间:即调用 session.setMaxInactiveInterval()方法,单位秒,
4、java web项目中,对web.xml文件进行配置,设置session的有效时间,单位默认是分钟
<sessiong-config>
  //设置session的有效时间,单位分钟
  <session-timeout>1</session-timeout>
<sessiong-config>

三、session销毁之后数据的丢失和保存

1、一般情况下,服务器重启,session会销毁,数据会丢失,如果要保留数据,那么对象必须要实现序列化,即实现 IO的 Serializable接口

通过序列化,把session数据持久化到磁盘中,生成文件,做到数据的不丢失,等一下次启动服务时,

再通过反序列化,把磁盘中的session数据持久化到内存中,这样就可以取到数据,响应给浏览器

2、小知识点:

把序列化的存储过程称为:** 钝化-搁置 ** ,在服务器重启或者内存溢出的时候会出现该情况。

把反序列化的存储过程称为:活化-激活


相关文章
解决开启子线程,导致request上下文和session信息丢失问题
解决开启子线程,导致request上下文和session信息丢失问题
899 0
|
9天前
|
Java API 调度
线程的生命周期和状态控制
线程的生命周期和状态控制
|
2月前
|
算法 安全 Java
线程的状态和生命周期
线程的状态和生命周期
25 0
|
11月前
Session的工作机制
Session的工作机制
54 0
|
JavaScript
可观测性网站之Session的生命周期
本文会列出session的属性值、统计指标,重点讲解session几个字段值,虽然session和view、app均有关联,但本文仅从代码层面对session的生命周期做解释。
83 0
|
存储 安全 Java
|
Java 调度
线程的生命周期和状态
线程通常有五种状态,创建,就绪,运行、阻塞和死亡状态。
162 0
线程的生命周期和状态
49session的生命周期实例
49session的生命周期实例
78 0
49session的生命周期实例
50session的销毁会话和超时管理
50session的销毁会话和超时管理
89 0
50session的销毁会话和超时管理