• session的状态或者生命周期


    一、session的创建

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

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

    request.getSession();
    
    • 1

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

    request.getSession(boolean var1);
    
    • 1

    获取session的JSESSIONID

    session.getId();
    
    • 1

    二、session销毁的四种方式:

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

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

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

    通过序列化,把session数据持久化到磁盘中,生成文件,做到数据的不丢失,等一下次启动服务时,
    再通过反序列化,把磁盘中的session数据持久化到内存中,这样就可以取到数据,响应给浏览器

    2、小知识点:

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

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

  • 相关阅读:
    JAVA安全之Log4j-Jndi注入原理以及利用方式
    抢购狂欢:跨境电商的区域购物节
    修改Windows的git bash的主题(样式)
    CTF-Crypto学习记录-第三天 MD5加密算法(信息摘要算法)“ “
    通过platform实现
    C语言条件运算符——三元表达式例题(素材来自C技能树)
    手柄零件的工艺设计
    常用linux的命令(持续更新)
    最佳云存储平台推荐:安全可靠的选择解析
    LaTeX各种数学符号
  • 原文地址:https://blog.csdn.net/weixin_43860634/article/details/126775389