Session会话管理技术

Session会话管理技术

会话: 两个交互,在开发中是指浏览器和服务器它们两个的交互

会话管理: 管理会话中产生的数据,一般是记录登录状态

补充: 状态管理,就是管理数据

1、 Session概述

  • Session用于记录用户的状态。Session指的是在一段时间内,单个客户端与Web服务器的一连串相关的交互过程。

  • 在一个Session中,客户可能会多次请求访问同一个资源,也有可能请求访问各种不同的服务器资源。

2、 Session原理

  • 服务器会为每一次会话分配一个Session对象

  • 同一个浏览器发起的多次请求,同属于一次会话(Session)

  • 首次使用到Session时,服务器会自动创建Session,并创建Cookie存储SessionId发送回客户端,后续再发请求,就会带上cookie,后端就会接收到该cookie中的sessionId从而获得session中的数据

  • 注意:session是由服务端创建的,存储在服务器

  • 注意: cookie是由服务器创建的,存储在浏览器

image-20231121144658044

3、 Session使用

  • Session作用域:拥有存储数据的空间,作用范围是一次会话内有效

    • 一次会话是使用同一浏览器发送的多次请求。一旦浏览器关闭,则结束会话

    • 可以将数据存入Session中,在一次会话的任意位置进行获取

    • 可传递任何数据(基本数据类型、对象、集合、数组)

3.1 获取Session

session是服务器端自动创建的,通过request对象获取

        //获取Session对象HttpSession session=request.getSession();System.out.println("Id:"+session.getId());//唯一标记,

3.2 Session保存数据

setAttribute(属性名,Object)保存数据到session中

    session.setAttribute("key",value);//以键值对形式存储在session作用域中。

ps: 登录成功后将登录信息存储到session

3.3 Session获取数据

getAttribute(属性名);获取session中数据

    session.getAttribute("key");//通过String类型的key访问Object类型的value

ps: 后续其他请求获取session,判断是否有对应的权限或者是否登录

3.4 Session失效

// 调用方法销毁
session.invalidate();//手工销毁
// 浏览器关闭,原有的Session会失效,相对于是没了

ps: 退出登录后,清空session

4、 Session域与Request域应用区别

  • request是一次请求有效,只有一次请求转发内数据可以获得

  • session是一次会话内有效,无论请求转发还是重定向都是可以获得数据的

5、 模拟登录认证[重点]

现有2个资源,一个是登录/login,一个是/list,没有登录认证之前,可以不用登录就可以访问/list所对应的资源,但是不合理,因此我们需要实现登录信息的认证!

即在操作/list等其他请求时,我们需要判断这次请求前有没有登录,如果没有登录就响应(请求转发)到登录页面,如果以前登录过,那就该干什么干什么..

如何实现?

  • 需要在登录成功时,将登录信息存入session

  • 需要在操作/list等请求时先判断session有无登录信息

登录成功后存储session

image-20240402114930053

查询全部时获取session

image-20240402115011867

image-20240402115029265

退出时销毁session

  • 设置一个请求按钮,或者超链接

  • 点击退出到登录页,同时销毁session

设置退出按钮,发送/logout请求

image-20240402115059636

image-20240402115115192

设置接收/logout的Servlet类

image-20240402115220042

6 、总结

session的实际应用:

  • 1 登录成功时存储

  • 2 拦截器中取出数据,判断是否登录,如果已经登录有数据,那就放行,如果没有跳转至登录页

  • 3 退出时销毁session

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

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

相关文章

Leetcode 1283. 使结果不超过阈值的最小除数

1.题目基本信息 1.1.题目描述 给你一个整数数组 nums 和一个正整数 threshold ,你需要选择一个正整数作为除数,然后将数组里每个数都除以它,并对除法结果求和。 请你找出能够使上述结果小于等于阈值 threshold 的除数中 最小 的那个。 每…

在登陆功能中添加Redis缓存

目录 基于Redis实现短信登录 实现流程图 实现代码 解决登录状态刷新问题 初始方案思路: 实现代码 发送验证码 登陆实现 如果是新用户则自动创建 运行测试 基于Redis实现短信登录 实现流程图 实现代码 Overridepublic Result login(LoginFormDTO loginForm…

初识动态规划一>第 N 个泰波那契数

1.题目: 2.解析: 动态规划解题模板解释: 本题: 1.状态方程:dp[i]第i个泰波那契数 2.状态转移方程:根据题意得:把Tn3 Tn Tn1 Tn2, 变为Tn Tn-3 Tn-2 Tn-1。 3.初始化&#xff…

react-问卷星项目(6)

实战 React常用UI组件库 Ant Design国内最常用组件库,稳定,强大Material UI国外流行TailWind UI 国外流行,收费 Ant Design 官网地址 这一章基本内容就是使用UI重构页面,也没有什么知识点,直接上代码 下载 npm ins…

[Linux]:线程(三)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. POSIX 信号量 1.1 信号量的概念 为了解决多执行流访问临界区&#xff0c…

Nuxt.js 应用中的 app:mounted 钩子详解

title: Nuxt.js 应用中的 app:mounted 钩子详解 date: 2024/10/5 updated: 2024/10/5 author: cmdragon excerpt: app:mounted 钩子在 Vue 应用的生命周期中扮演着重要角色,提供了在组件被挂载后的执行时机。通过合理利用这个钩子,我们能够提高组件的交互性、用户体验以及…

华为OD机试 - 核酸最快检测效率 - 动态规划、背包问题(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

基于单片机的智能浇花系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,采样DHT11温湿度传感器检测温湿度,通过LCD1602显示 4*4按键矩阵可以设置温度湿度阈值,温度大于阈值则开启水泵,湿度大于阈值则开启风扇…

基于STM32的智能窗帘控制系统设计

引言 本项目将基于STM32微控制器设计一个智能窗帘控制系统,用户可以通过按钮或遥控器控制窗帘的开关,并且系统能够根据光照强度自动调节窗帘的开合状态。该项目展示了STM32微控制器在家居自动化中的应用,以及与光照传感器、直流电机和红外接…

Linux网络编程 -- 网络基础

本文主要介绍网络的一些基础概念,不涉及具体的操作原理,旨在构建对网络的基础认识。 1、网络的早期发展历程 20世纪50年代 在这一时期,计算机主机非常昂贵,而通信线路和设备相对便宜。为了共享计算机主机资源和进行信息的综合处…

模拟器GSN3之DHCP动态分配IP地址配置案例

前文《详解DHCP服务工作原理及配置案例》介绍了DHCP服务工作原理,要想彻底理解、应用DHCP服务,须通过实证案例学习,该文在GSN3虚拟环境下,构建DHCP服务的环境。 一、配置环境: 1、GSN3 2、路由器:R1、R2…

冥想第一千三百零一天(1301)

1.今天上午溪溪和小侄子写作业,我带着桐桐去了惠济区的裕华广场永辉,给家人买了好吃的,下午4点半左右去了妈妈朋友家里摘石榴。 2.感谢父母,感谢朋友,感谢家人,感谢不断进步的自己。

[C++]使用纯opencv部署yolov11旋转框目标检测

【官方框架地址】 GitHub - ultralytics/ultralytics: Ultralytics YOLO11 🚀 【算法介绍】 YOLOv11是一种先进的对象检测算法,它通过单个神经网络实现了快速的物体检测。其中,旋转框检测是YOLOv11的一项重要特性,它可以有效地检…

利用 Python 爬虫采集 1688商品详情

1688是中国的一个大型B2B电子商务平台,主要用于批发和采购各种商品。对于需要从1688上获取商品详情数据、工程数据或店铺数据的用户来说,可以采用以下几种常见的方法: 官方API接口:如果1688提供了官方的API接口,那么可…

FinOps现状分析:行业趋势与未来展望

一、FinOps 的国内现状 《FinOps 现状》是 FinOps 基金会自 2020 年以来开展的一项年度调查,旨在收集对关键优先、行业趋势和 FinOps 实践方向 的见解。该调查有助于为 FinOps 基金会的活动提供信息,并为更广泛的市场提供有关 FinOps 在各种组织中如何实…

redhat7.7 linux 网络配置文件

一、为什么虚拟网卡配置文件是ens33 变更目录至网络脚本(network-scripts)文件夹,发现网络配置文件名称为“ifcfg-ens33” cd /etc/sysconfig/network-scripts ls扩展:“ifcfg-ens33”文件下面还有一个“ifcfg”前缀的文件&…

线程互斥函数的例子

代码 #include<stdio.h> #include<pthread.h> #include<sched.h> void *producter_f(void *arg); void *consumer_f(void *arg); int buffer_has_item0; pthread_mutex_t mutex; int running1; int main(void) {pthread_t consumer_t;pthread_t producter_t…

【ubuntu】APT、apt、apt-get介绍

目录 1.apt简介 2.常用apt指令 2.1安装 2.2更新列表 2.3更新已经安装的软件包 2.4搜索软件包 2.5显示软件包信息 2.6移除软件包 2.7清理无用的安装包 2.8清理无用的依赖项 3.apt和apt-get 3.1区别 3.2 总结 1.apt简介 apt的全称是advanced package …

大学生就业桥梁:基于Spring Boot的招聘系统

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

No.1 | 从小白到入门:我的渗透测试笔记

嘿&#xff0c;小伙伴们&#xff01;好久不见啊&#xff0c;是不是都以为我失踪了&#xff1f;&#x1f602; 其实呢&#xff0c;最近一直在埋头苦学&#xff0c;感觉自己就像是在技术的海洋里游泳&#xff0c;每天都在吸收新知识。现在终于有时间冒个泡&#xff0c;跟大家分享…