web实操9——session

概念

数据保存在服务器HttpSession对象里。
在这里插入图片描述
session也是域对象,有setAttribute和getAttribute方法

快速入门

在这里插入图片描述

代码

获取session和塞入数据:
在这里插入图片描述
获取session获取数据:
在这里插入图片描述
请求存储:
在这里插入图片描述
请求获取:
在这里插入图片描述
数据正常打印:
在这里插入图片描述

结论

由于浏览器和服务器都没用关闭,所以上面相当于一次会话的两次请求。
这时候把浏览器关闭,再直接访问demo2:
输出null,说明范围确实是在一次会话的:
一次会话中才能用session来共享数据。
在这里插入图片描述

原理分析

在这里插入图片描述
竟然共享数据,那么两次请求获取的肯定是同一个session。
那服务器是怎么确保这两个session是同一个的?
在这里插入图片描述
!!!session是依赖于cookie的,cookie是通过请求头和响应头来实现的。
1)第一次获取session,没有cookie会在内存中创建一个新的session对象,并且这个session对象有一个唯一的id值
2)给浏览器做响应的时候会发送一个响应头set-cookie:值是JSSONID=上面的session的Id。
3)浏览器收到cookie头会把cookie信息存储到浏览器内部。
4)下一次再访问当前项目里的其他资源的时候会携带这个cookie头,通过请求头cookie,值:JSSONID=session的Id值。
5)服务器自动去获取这个cookie信息,然后根据cookie信息去查找内存中有没有一个id为带过来的id的session对象。
6)找到了,getSession方法就找到了并返回。

通过抓包看

第一次:
请求头没有请求信息,响应头有响应:
在这里插入图片描述
第二次:
请求头有:
在这里插入图片描述
第一次第二次两个id值是一样的。

细节一

在这里插入图片描述

期望客户端关闭后session也能相同代码

设置一个cookie:
并设置最大存活时间,比如设置成一个小时(60秒*60=1h),那么在这一个小时之内,浏览器不管是否关闭,获取的session都是同一个。
在这里插入图片描述
我们先访问一次:
在这里插入图片描述

第一次访问session对象地址值为:
在这里插入图片描述
浏览器关闭后再次访问:
地址值一样:
在这里插入图片描述

细节二

在这里插入图片描述
浏览器不关闭,浏览器访问一次后,服务器关闭,浏览器再访问一次,两次session地址值一样么:

服务器关了,内存被释放了,session对象在内存里,所以肯定会一同被销毁掉,下次我们打开服务器再创建,两次session的地址值很难一样

两次不一样有什么问题:
虽然对象不是同一个,但是要确保数据不丢失。
钝化:序列化的过程
活化:反序列化的过程
在这里插入图片描述

说明:

tomcat已经帮我们做好钝化和活化的事了,但是idea完成不了钝化和活化的操作,我们需要借用本地的tomcat。

tomcat演示

先把工作空间里的复制到tomcat下面:
在这里插入图片描述
把这个复制一份放桌面然后把里面全部的内容打一个包:
在这里插入图片描述
在这里插入图片描述
改个名字, 直接把.zip扩展名改成.war:
在这里插入图片描述
在这里插入图片描述
然后直接把这个war包复制一份放到tomcat的webapps下:
在这里插入图片描述
然后启动本地的tomcat:
先访问demo1:
在这里插入图片描述
控制台没有任何输出:
在这里插入图片描述
再访问demo2:
在这里插入图片描述
在这里插入图片描述
然后服务器正常关闭掉,看tomcat是否会把session对象序列化到硬盘上:
到work目录下:
work目录下存储的是程序运行中动态生成的数据,包括jsp转换的java文件,session被序列化后的文件。

现在什么都没有:
在这里插入图片描述
然后服务器正常关闭:
在这里插入图片描述
这边自动生成一个:
这里面放的就是session对象。
在这里插入图片描述
然后再服务器启动:
这里自动消失了,他把对象又自动还原到内存中了。
在这里插入图片描述
虽然这时候地址值不一样,但是里面内容sessionid值都是一样的。
访问demo2:
依然可以拿到里面的数据:
在这里插入图片描述

说明

idea只能钝化不能活化,没关系,因为将来部署项目不会在idea本地部署,都是在tomcat服务器里。

细节三——session的失效时间

在这里插入图片描述

解释说明

2)httpSession中session自杀的方法:
一调用session就自己杀掉了自己。
在这里插入图片描述
3)比如打开一个网站,登陆了,登录30分钟之内没做任何操作,这时候session会失效,会提示你重新登录。session如果30分钟内不活动就会被服务器自动删除掉。
但是可以在tomcat里选择性配置的:
web.xml是所有项目的父配置文件:
在这里插入图片描述
打开,搜一下session的配置:
可以修改想要的时间。
在这里插入图片描述

session的特点

在这里插入图片描述
1)存的值是object,所以可以存任何类型。而且session没有大小的限制,想存多大存多大,只要你内存放得下。
在这里插入图片描述
2)重定向是一次会话中两次请求,两次请求之间我们要共享数据,可以使用session也可以使用applicationContext,但是使用context范围太大了,所以session是我们经常采用的共享一次会话的数据。
3)session一般存的数据比较大,session翻译过来是主菜的意思,cookie是小饼干,所以从他们体量来说session也比较大一点。

案例——验证码

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用LabVIEW算法及应用

在LabVIEW项目中,算法的应用是提高系统性能、实现特定功能、完成复杂任务的核心。LabVIEW作为一种图形化编程语言,允许用户通过直观的图形编程来实现各种复杂的算法。这些算法广泛应用于控制系统、数据采集、信号处理、图像处理、机器学习等领域。了解常…

AI Agent 开发共学招募 | 来 Sui 上探索自治智能的边界

Agent 一词源自拉丁语 “Agere”,意为“行动(to do)”。在大语言模型(LLM)的语境下,Agent 指的是能够感知环境、进行决策并执行任务的智能实体。 与传统的 RPA 相比,后者只能在预设的条件下执行…

安卓NDK视觉开发——手机拍照文档边缘检测实现方法与库封装

一、项目创建 创建NDK项目有两种方式,一种从新创建整个项目,一个在创建好的项目添加NDK接口。 1.创建NDK项目 创建 一个Native C项目: 选择包名、API版本与算法交互的语言: 选择C版本: 创建完之后,可…

计算机网络 —— 网络编程实操(1)(UDP)

计算机网络 —— 网络编程实操(UDP) 套接字端口套接字的定义为什么需要套接字? 套接字的分类1. 按照通信协议分类2. 按照地址族(Address Family)分类3. 按照通信模式分类 socket APIsockaddr结构 使用接口套接字初始化…

【HarmonyOS-ArkTS语言】面向对象【合集】

目录 😋环境配置:华为HarmonyOS开发者 🎯学习小目标: 📖实验步骤及方法: 1.在entry/src/main/ets/utils下创建MyClass.ets和MyConfig.ets文件​编辑 2.在MyConfig.ets中创建Interface Config 和enum l…

Excel | 空格分隔的行怎么导入excel?

准备工作:windows,一个记事本程序和微软的Excel软件。 打开记事本,选中所有内容,按CtrlA全选,然后复制(CtrlC)。 在Excel中,定位到你想粘贴的单元格,按CtrlV进行粘贴。粘贴后,你会在…

HTML 显示器纯色亮点检测工具

HTML 显示器纯色亮点检测工具 相关资源文件已经打包成html等文件,可双击直接运行程序,且文章末尾已附上相关源码,以供大家学习交流,博主主页还有更多Html相关程序案例,秉着开源精神的想法,望大家喜欢&#…

idea项目导入gitee 码云

1、安装gitee插件 IDEA 码云插件已由 gitosc 更名为 gitee。 1 在码云平台帮助文档http://git.mydoc.io/?t153739上介绍的很清楚,推荐前两种方法, 搜索码云插件的时候记得名字是gitee,gitosc已经搜不到了。 2、使用码云托管项目 如果之…

python学习笔记—13—while和for循环

1. while循环 (1) 代码 1. 示例 i 0 while i < 100:print(f"第{i}次循环")i 1 2. 计算从1加到100的和 i 1 sum 0 while i < 100:sum ii 1 print(f"1加到100的和是{sum}") 3. 使用while循环无限次猜测随机产生的数字&#xff0c;直到猜对&am…

计算机网络与服务器

目录 架构体系及相关知识 三层架构&#xff1a; 四层架构&#xff1a; 常见的应用的模式&#xff1a; OSI模型 分层 数据链路层 TCP/IP模型 TCP和UDP都是传输层的协议 TCP三次握手、四次次分手 URL&HTTP协议详解 网址URL 结构化 报文行 报文头 空行 报文体…

Mybatis(day09)

Mybatis基础操作 功能列表&#xff1a; 查询 根据主键ID查询 条件查询新增更新删除 根据主键ID删除 根据主键ID批量删除 准备 实施前的准备工作&#xff1a; 准备数据库表创建一个新的 springboot 工程&#xff0c;选择引入对应的起步依赖&#xff08;mybatis、mysql 驱动、…

CSS Grid 布局示例(基本布局+代码属性描述)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>CSS Grid 布局示例</title><style>.gri…

数据挖掘——数据预处理

数据挖掘——数据预处理 数据预处理数据预处理 ——主要任务数据清洗如何处理丢失的数据如何处理噪声数据如何处理不一致数据 数据集成相关分析相关系数(也成为皮尔逊相关系数)协方差 数据规约降维法&#xff1a;PCA主成分分析降数据——抽样法数据压缩 数据预处理 数据预处理…

我在广州学 Mysql 系列——有关数据表的插入、更新与删除相关练习

ℹ️大家好&#xff0c;我是练小杰&#xff0c;今天是星期四了&#xff0c;明天就是星期五了&#xff01;&#xff01;这周过得真快啊&#xff01;&#xff01; 本文将针对MYSQL数据表内容的插入&#xff0c;更新以及删除&#xff0c;相关命令的各种练习~~ 复习&#xff1a;&am…

OpenGL —— 流媒体播放器 - ffmpeg解码rtsp流,opengl渲染yuv视频(附源码,glfw+glad)

效果 说明 FFMpeg和OpenGL作为两大技术巨头,分别在视频解码和图形渲染领域发挥着举足轻重的作用。本文将综合两者实战视频播放器,大概技术流程为:ffmpeg拉取rtsp协议视频流,并经过解码、尺寸格式转换为yuv420p后,使用opengl逐帧循环渲染该yuv实时视频。 核心源码 vertexSh…

彻底学会Gradle插件版本和Gradle版本及对应关系

看完这篇&#xff0c;保你彻底学会Gradle插件版本和Gradle版本及对应关系&#xff0c;超详细超全的对应关系表 需要知道Gradle插件版本和Gradle版本的对应关系&#xff0c;其实就是需要知道Gradle插件版本对应所需的gradle最低版本&#xff0c;详细对应关系如下表格&#xff0…

【学习笔记】数据结构(十)

内部排序 文章目录 内部排序10.1 概述10.2 插入排序10.2.1 直接插入排序10.2.2 其他插入排序10.2.2.1 折半插入排序(Binary Insertion Sort)10.2.2.2 2-路插入排序&#xff08;Two-Way Insertion Sort&#xff09;10.2.2.3 表插入排序&#xff08;Table Insertion Sort&#xf…

论文解读 | NeurIPS'24 IRCAN:通过识别和重新加权上下文感知神经元来减轻大语言模型生成中的知识冲突...

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 点击 阅读原文 观看作者讲解回放&#xff01; 作者简介 史丹&#xff0c;天津大学博士生 内容简介 大语言模型&#xff08;LLM&#xff09;经过海量数据训练后编码了丰富的世界知识。最近的研究表明&#xff0c…

Python编程实例-特征向量与特征值编程实现

特征向量与特征值编程实现 文章目录 特征向量与特征值编程实现1、什么是特征向量2、特征向量背后的直觉3、为什么特征向量很重要?4、如何计算特征向量?4、特征向量Python实现5、可视化特征向量6、总结线性代数是许多高级数学概念的基石,广泛应用于数据科学、机器学习、计算机…

密码学原理技术-第十一章-Hash Functions

文章目录 总结Why we need hash functionsDigital Signature with a Hash FunctionBasic Protocol for Digital Signatures with a Hash FunctionPrincipal input–output behavior of hash functions Security propertiesThe three security requirements of hash functionsWh…