关于cookie和session的直观讲解(二)

news2024/11/15 17:45:23

前言

上一章,讲解了Cookie,本章介绍Session.

概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中HttpSession。

Session

基础

  • 获取HttpSession对象:
    HttpSession session = request.getSession();

  • 使用HttpSession对象:
    Object getAttribute(String name) ;
    void setAttribute(String name, Object value);
    void removeAttribute(String name) ;

  • 原理:
    Session的实现是依赖于Cookie的,看案例。
    在这里插入图片描述
    在这里插入图片描述
    默认给设置了Cookie属性。
    同时,我们也可以看到,它在创建Cookie的时候,同时加上了path=/的设置,这就说明,在本项目下,不管访问哪个接口都能拿到Session。

    补充 HttpOnly说明:
    在这里插入图片描述
    另外,一定要注意,Cookie的创建不是在Session设置属性的时候才创建的,而是在获取Session的时候就创建了

     HttpSession session = request.getSession();//获取session,并返回自定义生成的cookie
    

细节

  • 当客户端关闭后,服务器不关闭,两次获取session是否为同一个?
    默认情况下。不是,原因是,当客户端浏览器关闭后,cookie就注销了,再打开浏览器去请求接口,客户端是没有携带Cookie的,所以请求什么都拿不到,后端在获取属性的时候,同时给前端返回一个新的Cookie。
    在这里插入图片描述
    那你可能有疑问,浏览器不关闭的时候,第一次请求设置session,返回了Cookie,第二次携带这个Cookie请求另一个获取Session的接口,也就是上边的接口,会不会产生一个新的Cookie呢?答案是不会的。
    在这里插入图片描述
    当然,如果你想让浏览器重新打开获取的session为同一个,也是可以的:
    可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。

    Cookie c = new Cookie("JSESSIONID",session.getId());
    c.setMaxAge(60*60);
    response.addCookie(c);
    
  • 客户端不关闭,服务器关闭后,两次获取的session是同一个吗?
    不是同一个,但是如果你用的tomcat,当tomcat正常关闭的情况下,会自动帮你把session序列化到硬盘,之后服务端启动,再反序列化到内存中,这就是tomcat对session的钝化和活化机制。
    注意,如果你在idea中操作,那么这个钝化和活化机制也会有,但是再重启的时候,硬盘中整个缓存的session会被idea删除,所以就不会重新序列化

  • session什么时候被销毁?
    服务器关闭;
    session对象调用invalidate();
    session默认失效时间 30分钟;

    设置方法:
    在这里插入图片描述
    当然在这里也可以全局设置Cookie。
    如果是在tomcat里的话,我们可以到tomcat\conf\web.xml文件下,找到:

    <session-config>
         <session-timeout>30</session-timeout>
    </session-config>
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2108148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

High-Resolution Image Synthesis with Latent Diffusion Models论文学习

想要研究多模态数据生成就要研究diffusion架构。今天通过这个论文来学习一下。 在此之前先通过博文扩散模型 (Diffusion Model) 之最全详解图解-CSDN博客学习一下。 GAN就是生成对抗模型&#xff0c;让两个模型打擂台&#xff0c;一个造假一个打假。 而diffusion模型则是从原…

第十五届蓝桥杯图形化省赛题目及解析

第十五届蓝桥杯图形化省赛题目及解析 一. 单选题 1. 运行以下程序&#xff0c;角色会说( )? A、29 B、31 C、33 D、35 正确答案&#xff1a;C 答案解析&#xff1a; 重复执行直到m>n不成立&#xff0c;即重复执行直到m<n。所有当m小于或者 等于n时&…

数据结构(14)——哈希表(1)

欢迎来到博主的专栏&#xff1a;数据结构 博主ID&#xff1a;代码小豪 文章目录 哈希表的思想映射方法&#xff08;哈希函数&#xff09;除留余数法 哈希表insert闭散列负载因子扩容find和erase 哈希表的思想 在以往的线性表中&#xff0c;查找速度取决于线性表是否有序&#…

Origin 2024下载安装教程(中文版软件包) 百度网盘分享链接地址

Origin是什么软件&#xff1f; origin主要是绘图、数据分析、数据导入导出的功能。Origin 广泛应用于科学研究、工程技术、数据分析等领域&#xff0c;Origin 是一款功能强大、易于使用的科学绘图和数据分析软件&#xff0c;能够帮助你高效地处理和可视化数据&#xff0c;为你…

C程序设计——函数0

函数定义 前面说过C语言是结构化的程序设计语言&#xff0c;他把所有问题抽象为数据和对数据的操作&#xff0c;前面讲的变量、常量&#xff0c;都是数据。现在开始讲对数据操作——函数。 C语言的函数&#xff0c;定义方式如下&#xff1a; 返回值类型 函数名(参数列表) {…

论文速读|重新审视奖励设计与评估:用于强健人型机器人站立与行走控制的方法

论文地址&#xff1a;https://arxiv.org/pdf/2404.19173 这篇论文为类人机器人站立和行走&#xff08;SaW&#xff09;控制器的持续可衡量改进奠定了基础。通过引入一套定量实际基准测试方法&#xff0c;作者展示了现有控制器的优缺点&#xff0c;并通过基准测试指导新控制器的…

龙芯L2K0300开发板综合测试

CPU 查看cpu版本信息 cat /proc/cpuinfo可以看到cpu是64位的LoongsonArch架构 stress压力测试结果 RAM 久久派板载512MB DDR4-2666内存&#xff0c;查看内存信息 cat /proc/meminfo可以用memtester进行内存性能测试 memtester <size> <times>memtester测试结果…

Java 工程师转型大数据的优势——别小看自己!

时间&#xff1a;2024年09月05日 作者&#xff1a;小蒋聊技术 邮箱&#xff1a;wei_wei10163.com 微信&#xff1a;wei_wei10 音频地址: https://xima.tv/1_U3suSJ?_sonic0 希望大家帮个忙&#xff01;如果大家有工作机会&#xff0c;希望帮小蒋推荐一下&#xff0c;小蒋希…

2024国赛数学建模A题思路模型

完整的思路模型请查看文末名片

机器学习:opencv图像识别--模版匹配

目录 一、模版匹配的核心概念 1.图片模板匹配是一种用于在图像中查找特定模式或对象的技术。 2.模板图像 3.目标图像 4.滑动窗口 5.相似度度量 6.匹配位置 二、模版匹配的步骤 1.准备图像&#xff1a; 2.预处理&#xff1a; 3.匹配&#xff1a; 4.定位最佳匹配&…

【MySQL】初识MySQL—MySQL是啥,以及如何简单操作???

前言&#xff1a; &#x1f31f;&#x1f31f;本期讲解关于MySQL的简单使用和注意事项&#xff0c;希望能帮到屏幕前的你。 &#x1f308;上期博客在这里&#xff1a;http://t.csdnimg.cn/wwaqe &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 目…

2024数学建模国赛题目A-E题

2024数学建模国赛题目A-E题已经发布 各个赛题题目如下 A题 板凳龙 闹元宵 B题 生产过程中的决策问题 C题 农作物的种植策略 D题 反潜航空深弹命中概率问题 E题 交通流量管控 Csdn在文末&#xff0c;关注云顶数模公众号&#xff0c;或者点击下方名片。

2024年高教社杯数学建模国赛赛题浅析——助攻快速选题

一图流——一张图读懂国赛 总体概述&#xff1a; A题偏几何与运动学模型&#xff0c;适合有几何与物理背景的队伍&#xff0c;数据处理复杂性中等。 B题侧重统计和优化&#xff0c;适合有运筹学和经济学背景的队伍&#xff0c;数据处理较为直接但涉及多步骤的决策优化。 C题…

新手c语言讲解及题目分享(十六)--文件系统专项练习

在我刚开始学习c语言的时候就跳过了这一章节&#xff0c;但在后面慢慢发现这一章节还是比较重要的,如果你报考了计算机二级c语言的话&#xff0c;你应该可以看到后面的三个大题有时会涉及到这章。所以说这章还是非常重要的。 目录 前言 一.打开文件 1.Fopen( )函数返回值 2&…

Keil发现Error: C9555E: Failed to check out a license

遇到这样的问题 解决办法&#xff1a; 换成这个版本 然后重新用keygen生成license

如何理解进程和线程之间的关系

目录 前言 一、进程和线程的关系 1、引入线程的原因 2、线程的特点 3、线程和进程的关系 二、如何在进程中创建线程 1、创建线程的函数 2、举例使用&#xff1a; 三、线程间的同步互斥机制 1、什么是同步互斥机制 2、如何在线程中使用同步互斥机制 3、实际举例 总结 前言 …

为什么要有RPC

​ 1. RPC&#xff08;Remote Procedure Call&#xff09; 定义&#xff1a; RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;是一种允许程序在不同的地址空间&#xff08;通常是在网络上的不同机器&#xff09;之间调用函数或方法的机制。它使得…

代码随想录算法训练营Day03 | 链表理论基础、203.移除链表元素 、707.设计链表、206.反转链表

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 链表理论基础203.移除链表元素思路与重点 707.设计链表思路与重点 206.反转链表思路与重点 链表理论基础 C/C的定义链表节点方式&#xff1a; // 单链表 struct L…

vue part 8

浏览器本地存储 application&#xff0c; local storage中 js方法肯定会用很多呀&#xff0c;只是不直接操作dom了但是对对象和数组进行操作还是原先的方法&#xff0c;jq的话想用引入就可以了。我是直接放弃jq了&#xff0c;在框架中用jq包不好 sessionStorage.HTML <!…

Git+word记笔记

程序员记笔记主要同步很重要&#xff0c;我这个方法只支持个人笔记&#xff0c;如果团队还是用企业微信开个企业会员比较方便。为什么用word&#xff0c;因为可以镶嵌代码和文档&#xff0c;不仅仅是文字&#xff0c;兼容性强 语雀&#xff0c;云笔记这些对于上传的word都是有…