如何维护Http请求的状态

news/2024/5/18 16:39:46 标签: http协议, cookie, session, 无状态协议

我们都知道,Http协议是无状态的,也就是说,下一次请求并不知道上次请求的内容,那么,我们如何维护Http请求的状态呢?

一、服务端处理:

  1. 当浏览器第一次请求时,给请求者分配一个唯一标识,如:001,并随请求一同返回给请求者;
  2. 创建一个Map结构,以用户标识为key,要维护的会话内容为value。

二、客户端(浏览器)处理:

  1. 第一次请求结束后,浏览器保存服务端分配的唯一标识
  2. 浏览器每次向服务端发起请求时,将服务端分配给自己的唯一标识携带上。

上面的处理方案,其实就是我们现行浏览器和web容器采用的方案,即Cookie和Session。Cookie是在浏览器端维护的,Session是在服务端维护的。

  1. 如何记录一次会话?
    当浏览器第一次请求时,web容器会生成一个JSESSIONID,并将JSESSIONID返回给浏览器,浏览器会将JSESSIONID保存在本地的Cookie中,以后每次请求都会携带JSESSIONID,用于标识是同一个浏览器的请求。

  2. 如何记录会话内容?
    上面的JSESSIONID只能记录所有的请求在同一次会话中,并不能记录上次的会话内容,如果需要记录上一次的会话内容,只需要将内容保存在服务端的Session中。Session保存的是一个键值对,这次请求保存的数据可以在下次请求中取出来。


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

相关文章

Android开发之armeabi

说到ARM,首先有必要了解一下ARM、x86(x64)、Intel处理器、骁龙处理器的区别了。 ARM与X86都是处理器的架构,ARM架构属于RISC指令集,X86构架属于典型的CISC指令集。Intel处理器是基于x86(x64)架…

修改Tomcat的默认上下文路径

方法一&#xff1a;修改tomcat配置文件server.xml 在server.xml中的<Host>节点里面添加<Context>节点。 下面简要描述一下在配置Web应用程序时元素中常用的几个属性含义。 path&#xff1a;指定Web应用程序的上下文路径。在一个特定的虚拟主机中&#xff0c;所有…

MySQL生成分布式id

一、分布式id算法 首先需要在id_sequence表中配置一个唯一的key_name&#xff0c;分布式id的起始值和步长。 当服务需要分布式id时&#xff0c;会首先从数据库中获取一个start_id&#xff0c;然后将start_id更新成start_idstep。那么从start_id~start_idstep段内对的所有id&a…

MySQL的用户变量和系统变量

MySQL中的变量分为用户变量与系统变量。 一、用户变量 用户变量是指与数据库的一次连接中声明的变量&#xff0c;在连接断开后就会消失。 1、变量命名 变量名必须以开头&#xff0c;例如name 2、声明及赋值 声明与赋值的方法两种&#xff0c;一种是使用set语句&#xff0…

Redis info详解

首先给大家总结一下几个重要的参数&#xff0c;然后再详细的讲解info命令输出的所有参数。 1、内存使用情况 used_memory &#xff1a;内存使用大小&#xff08;以字节为单位&#xff09; used_memory_human&#xff1a;内存使用大小&#xff08;以人类可读的方式显示&#xff…

Maven项目上总有一个小红叉,但是其他地方没有,这是为什么?

一般原因&#xff1a; pom文件里引用的包没找到。 解决思路&#xff1a; 1、查看problems选项卡&#xff0c;里面有对问题的描述 2、工程右键->maven->update project(勾选Force Update) 3、如果更新maven依赖不行&#xff0c;试试先将maven工程转换为一般工程&…

Could not open ServletContext resource [/WEB-INF/applicationContext.xml]

1、首先检查在DispatcherServlet中是否添加了init-param标签 <servlet><servlet-name>mvcServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 添加init-param标签 --><ini…

分治算法实例

1、求x的n次幂 public long power(int x,int n){long result;if(n1){return x;}else{if(n%20){result power(x,n/2)*power(x,n/2);}else{result power(x,n/21)*power(x,n/2);}}return result;} 注&#xff1a;这只是一个示例&#xff0c;具体说来&#xff0c;计算x的n次幂时…