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

HttpSession使用方法及原理

HttpSession使用方法及原理

  • 一、HttpSession使用流程说明
  • 二、登录
    • 概述
    • 具体
  • 三、访问过程
    • 概述
    • 具体

一、HttpSession使用流程说明

1.用户发送登录请求到服务器。
2.服务器处理登录请求,调用userService.login(loginUser)。
3.如果登录成功,服务器调用request.getSession()获取或创建会话。
4.服务器通过【JSESSIONID:session】键值对的方式保存session
5.服务器将会话ID(JSESSIONID)通过Set-Cookie头部发送给浏览器。
6.浏览器将JSESSIONID存储在cookie中。
7.服务器设置会话属性session.setAttribute(“user”, user);。
8.服务器返回登录成功的响应给前端。
9.在后续的请求中,浏览器会自动将JSESSIONID通过Cookie头部发送给服务器,以便服务器能够识别用户的会话。

二、登录

概述

1.用户调用登录接口
2.存储用户的session信息(新生成或者读取老的),并返回前端JSESSIONID
3.浏览器将JSESSIONID存储至 cookie中

HttpSession session = request.getSession();//
session.setAttribute("user",user);

具体

当你调用 request.getSession() 方法时,如果当前请求还没有与之关联的会话(HttpSession),服务器会自动创建一个新的会话,并生成一个唯一的会话ID(如JSESSIONID),然后这个会话ID会被自动地通过HTTP响应的Set-Cookie头部发送给客户端(即浏览器)。
虽然没有直接操作JSESSIONID或将其返回给前端,但当你调用request.getSession()并设置会话属性时,服务器已经负责了JSESSIONID的创建、发送和接收工作。
(使用Apifox进行接口测试)如下图所示,当访问登录接口时,返回的报文Header头中,包含set-Cookie字段,其中就记录了JSESSIONID
在这里插入图片描述

三、访问过程

概述

1.根据cookie带过来的JSESSIONID,通过键值对关系,来获取session
2.根据session来获取user用户信息

//参数为false情况下,获取session(但不会自动创建一个空的,不存在则返回null)
HttpSession session = request.getSession(false);
UserInfo userinfo = session.getAttribute("user")

具体

使用Apifox接口测试工具,访问其他接口
在Header中有一个Cookie字段
在这里插入图片描述
点击进入Cookie,可以看见JSESSIONID这个信息
在这里插入图片描述
当用户访问接口时,HttpServletRequest对象调用getSession时,就会根据JSESSIONID自动去获取对应的HttpSession对象信息

HttpSession session = request.getSession(false);

http://www.kler.cn/a/329631.html

相关文章:

  • Linux 音视频入门到实战专栏(视频篇)视频编解码 MPP
  • Redis可视化工具--RedisDesktopManager的安装
  • 统信V20 1070e X86系统编译安装PostgreSQL-13.11版本以及主从构建
  • Spring Web MVC综合案例
  • LabVIEW串口通信调试与数据接收问题
  • 【论文阅读笔记】基于YOLO和ResNet深度卷积神经网络的结直肠息肉检测
  • .c、.cpp、.cc、.cxx、.cp后缀的区别
  • YOLOv8改进,YOLOv8改进主干网络为GhostNetV3(2024年华为的轻量化架构,全网首发),助力涨点
  • C++ STL(3)list
  • 卡夫卡的理解
  • 事务原理,以及MVCC如何实现RC,RR隔离级别的
  • 告别PPT熬夜!Kimi+AIPPT一键生成PPT,效率upup!
  • Docker全家桶:从0到加载本地项目
  • docker 部署 Seatunnel 和 Seatunnel Web
  • 浏览器用户行为集群建设-数仓建模-数据计算
  • 828华为云征文|华为云Flexus云服务器X实例搭建部署H5美妆护肤分销商城、前端uniapp
  • pytorch千问模型源码分析
  • leetcode.每日一题.2516.每种字符至少取 K 个
  • 【C++】C++基础
  • 魔都千丝冥缘——软件终端架构思维———未来之窗行业应用跨平台架构
  • D21【python接口自动化学习】-python基础之内置数据类型
  • Git记录
  • C语言:排序(1)
  • 毕业设计选题:基于ssm+vue+uniapp的家庭记账本小程序
  • 在线远程考试|基于springBoot的在线远程考试系统设计与实现(附项目源码+论文+数据库)
  • 【C++】“list”的介绍和常用接口的模拟实现