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信息丢失问题
1052 0
|
3月前
|
安全 Java 调度
线程的状态和生命周期
在多线程编程中,线程的状态和生命周期是两个非常重要的概念。了解线程的状态和生命周期可以帮助我们更好地理解和编写多线程程序。
55 4
|
3月前
|
Java 数据库连接 数据库
|
5月前
|
Java API 调度
线程的生命周期和状态控制
线程的生命周期和状态控制
|
6月前
|
算法 安全 Java
线程的状态和生命周期
线程的状态和生命周期
37 0
|
JavaScript
可观测性网站之Session的生命周期
本文会列出session的属性值、统计指标,重点讲解session几个字段值,虽然session和view、app均有关联,但本文仅从代码层面对session的生命周期做解释。
108 0
|
存储 安全 Java
|
Java 调度
线程的生命周期和状态
线程通常有五种状态,创建,就绪,运行、阻塞和死亡状态。
200 0
线程的生命周期和状态
49session的生命周期实例
49session的生命周期实例
93 0
49session的生命周期实例