当前位置: 首页 > news >正文

会话机制:Session

1、什么是会话:

  • 会话对应的英语单词:session

  • 用户打开浏览器,进行一系列操作,然后最终将浏览器关闭,这个整个过程叫做:一次会话。会话在服务器端也有一个对应的java对象,这个java对象叫做:session。

  • 什么是一次请求:用户在浏览器上点击了一下,然后到页面停下来,可以粗略认为是一次请求。请求对应的服务器端的java对象是:request。

  • 一个会话当中包含多次请求。(一次会话对应N次请求。)

2、在java的servlet规范当中,session对应的类名:HttpSession(jarkata.servlet.http.HttpSession)(tomcat10版本)

3、session机制属于B/S结构的一部分。如果使用php语言开发WEB项目,同样也是有session这种机制的。session机制实际上是一个规范。然后不同的语言对这种会话机制都有实现。

4、session对象最主要的作用是:保存会话状态。(用户登录成功了,这是一种登录成功的状态,你怎么把登录成功的状态一直保存下来呢?使用session对象可以保留会话状态。)

5、为什么需要session对象来保存会话状态呢?

  • 因为HTTP协议是一种无状态协议。

  • 什么是无状态:请求的时候,B和S是连接的,但是请求结束之后,连接就断了。为什么要这么做?HTTP协议为什么要设计成这样?因为这样的无状态协议,可以降低服务器的压力。请求的瞬间是连接的,请求结束之后,连接断开,这样服务器压力小。

6、session对象的实现

//设置session
HttpSession session = request.getSession();
//给session设置为键值对,例如
session.setAttribute("username",username);
//获取
Object username = session.getAttribute(username);

7、session的实现原理:

  • JSESSIONID=xxxxxx 这个是以Cookie的形式保存在浏览器的内存中的。浏览器只要关闭。这个cookie就没有了。

  • session列表是一个Map,map的key是sessionid,map的value是session对象。

  • 用户第一次请求,服务器生成session对象,同时生成id,将id发送给浏览器。

  • 用户第二次请求,自动将浏览器内存中的id发送给服务器,服务器根据id查找session对象。

  • 关闭浏览器,内存消失,cookie消失,sessionid消失,会话等同于结束。

8、销毁session对象:

session.invalidate();

相关文章:

  • Vue3实战笔记(46)—Vue 3高效开发定制化Dashboard的权威手册
  • Python库之`lxml`的高级用法深度解析
  • Python开发Android手机APP
  • Java入门基础学习笔记42——常用API
  • Python Flask 图片上传与下载
  • 基于yolov5和desnet的猫咪识别模型
  • 深度学习中的优化算法二(Pytorch 19)
  • Spring ----> IOC
  • 探索集合python(Set)的神秘面纱:它与字典有何不同?
  • 【建议收藏】30个较难Python脚本,纯干货分享
  • jenkins升级,涉及ssh remote执行出现Algorithm negotiation fail
  • C++系列-static成员
  • Spring Boot 项目统一异常处理
  • netplan
  • Visual Studio 的调试(一)
  • .pyc 想到的一些问题
  • conda常用的命令
  • JavaScript 一些 DOM 的知识点
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Otto开发初探——微服务依赖管理新利器
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Ruby 2.x 源代码分析:扩展 概述
  • RxJS: 简单入门
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 基于Android乐音识别(2)
  • 利用DataURL技术在网页上显示图片
  • 聊聊flink的BlobWriter
  • 前言-如何学习区块链
  • 新版博客前端前瞻
  • 用element的upload组件实现多图片上传和压缩
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • 如何正确理解,内页权重高于首页?
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • ​一些不规范的GTID使用场景
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #pragma once
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • #预处理和函数的对比以及条件编译
  • (14)Hive调优——合并小文件
  • (2)Java 简介
  • (30)数组元素和与数字和的绝对差
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)fiber的基本认识
  • (二)pulsar安装在独立的docker中,python测试
  • (黑马C++)L06 重载与继承
  • (七)理解angular中的module和injector,即依赖注入
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (数据结构)顺序表的定义
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转)ObjectiveC 深浅拷贝学习
  • (转载)从 Java 代码到 Java 堆
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程