[java]关于会话Session

news/2024/7/24 4:03:49 标签: 服务器, 运维

前言: 

客户端向服务端发请求,登陆完之后,进入到首页,如何让客户端知道它有没有登陆过呢,需要从首页里面向服务器发出异步请求,请求当前登录的用户信息,登录过就能获取得到,没登陆过获取不到。

关于会话的概念:有n多个客户端访问同一个服务器服务器会根据访问的客户端创建一个这个客户端专属的会话对象,它能避免客户端之间的信息不会冲突,会话的作用就是用来记录客户端的行为的。比如在登录过后就会在会话里面增加一个标识存个东西,然后进入首页之后,发出异步请求时就是获取这个东西,如果有就能判断登陆过。

即:客户端向服务器发请求时,服务器会针对于当前的客户端创建一个与之相对应的会话对象, 这个会话对象是用来记录客户端行为的对象, 同一个客户端的多次请求共享同一个会话对象

实现:

通过会话对象可以记录客户端的登录状态, 在客户端登录成功时, 可以把登录成功时 的UserVO保存到会话对象里面,之后同一客户端发出的请求可以访问此会话对象, 如果里面有UserVO代表登录过, 没有则代码没有登录过,如下步骤:
 

 在登录成功时 把从数据库中查询到的UserVO保存进会话对象中

 补充:这里的“user”可以理解为map的key,可以取任何名字,取得时候会用到它,user则对应value。  HttpSession是同一个变量,不同的对象,不同客户端来访问就代表对应的客户端。

 

 进入页面便发送请求:

 

 从会话对象中获取当前登录的用户对象

 补充:这里能从session拿到Uservo是因为springmvc会自动去找到和当前客户端对应的会话对象。同时因为有多个客户端,为了保证唯一性,内部会在创建了会话对象之后会给客户端响应一个id,之后的每次请求都会带着这个id,就能找到所对应的会话对象了。同一个客户端不同的浏览器会有多个会话对象,因为这个id保存在浏览器的,换了一个浏览器后就不会带着id去访问。

测试:用if else在登录成功的时候展示不同的页面

退出登录 


退出登录时需要将会话对象里面的user删除

 


http://www.niftyadmin.cn/n/376464.html

相关文章

content-visibility:可以提高项目的渲染性能

文章目录 一、前言二、浏览器支持程度三、CSS Containment四、跳过具有 content-visibility 的渲染工作五、关于accessibility的说明六、使用contains-intrinsic-size指定元素的自然大小七、通过content-visibility: hidden隐藏内容八、对下一幅画的交互影响(INP) 一、前言 co…

修改mysql密码与mac中mysql的启动与终止

目录 修改mysql密码 1.进入你的mysql文件下的bin目录下: 2.修改mysql密码 mysql的启动与终止(mac) 修改mysql密码 1.进入你的mysql文件下的bin目录下: 如果不知道自己电脑上的mysql在哪里的话,输入: …

在idea中创建maven

说明:maven是一款管理和构建java项目的工具,使用maven,可规范开发,提高开发效率;maven的安装参考:http://t.csdn.cn/623Ah 配置Maven环境 创建maven,先要做准备工作,把idea中的环境…

MySQL查询当前数据和上一行数据比较、业务数据的趋势分析、数据变动的监控和报警

标题: 使用MySQL查询当前数据和上一行数据比较的场景 在MySQL中,我们经常需要对数据进行比较和分析。其中一种常见的需求是查询数据列表并与前一行的数据进行比较。这种场景可以通过使用窗口函数或连接来实现。本文将介绍使用MySQL查询比较数据和上一行数据的场景&a…

我的第一节Java

Java 条件语句 - if…else Java 中的条件语句允许程序根据条件的不同执行不同的代码块。 一个 if 语句包含一个布尔表达式和一条或多条语句。 语法 if 语句的语法如下: if(布尔表达式) {//如果布尔表达式为true将执行的语句 }如果布尔表达式的值为 true&#xf…

Redis 注册服务,自动启动

通常情况下我们可以通过 redis-server.exe 和配置文件启动redis服务 : 命令: redis-server.exe redis.windows.conf 另外开启一个命令行窗口 redis-cli.exe 即可做一些简单的操作命令行 但如果我们关闭控制台,那么Redis服务也跟随着一起关闭了&#x…

2023年高级系统架构设计师 如何备考?

高级架构有一定的难度,但是值得挑战一下 新版《系统架构设计师考试大纲》出版了! 可以去官网看看 系统架构设计师是软考的高级科目之一,系统架构设计师一年只有一次考试机会,是在下半年11月份考试 考试科目分为:综合…

Unity Emisson 自发光属性全局照明

给想要自发光的物体,选择Unity自带Standard Shader。然后勾选Emisson 如下图: 属性: Color指定发光的颜色和强度。单击 Color 框可打开 HDR Color 拾色器。在此处可以更改光照的颜色和发光的强度 (Intensity)。要指定材质的哪些区域发光&…