深入解析Tomcat服务器如何处理和传递Cookie数据:从AServlet到BServlet的完整流程

● 响应头:set-cookie

深入解析Tomcat服务器如何处理和传递Cookie数据:从AServlet到BServlet的完整流程

● 请求头:cookie

● AServlet 向前端发送Cookie,BServlet 从请求中获取Cookie 功能。

● 当AServlet 响应数据时,Tomcat 服务器基于HTTP 协议响应数据。

● 当Tomcat 发现后端返回Cookie 对象时,Tomcat 会在响应头中添加一行数据Set-Cookie:username=zs。

● 浏览器获得响应结果后,可以从响应头中获取Set-Cookie 对应值username=zs,并将该数据存储在浏览器内存中。

● 当浏览器再次向BServlet发送请求时,浏览器会自动在请求头中添加Cookie:username=zs并发送给服务器BServlet

● Request对象会将请求头中cookie对应的值封装成Cookie对象,最终形成一个数组。

● BServlet 通过Request 对象获得Cookie[]后,就可以从中获取自己需要的数据。

Cookie 使用详情

● 设置cookie的生存时间

setMaxAge(int 秒)

参数值为:

1. 正数:将cookie写入浏览器所在计算机的硬盘中进行持久存储。时间到了自动删除

2.负数:默认值,cookie在当前浏览器内存中。当浏览器关闭时,cookie 就会被销毁。

3. 清零:删除对应的cookie

存储汉字的编码和解码

.在AServlet中对中文URL进行编码,使用URLEncoder.encode(),并将编码值存储在Cookie中

2. 获取BServlet中Cookie中的值。获取的值是 URL 编码的值。

3. 对得到的值进行URL解码,使用URLDecoder.decode()得到对应的中文值。

会议

服务器端会话技术

在服务器端存储数据;每节课一次;

基于cookie,即向客户端保存特殊标识符,将共享数据保存到服务器的内存对象中。每次发出请求时,都会将标识符带到服务器,然后通过标识符查找对应的内存空间,实现数据共享。

原理分析:

浏览器A第一次访问服务器(即创建session和cookie),保存后可以多次访问;

在浏览器B中首次访问服务器(即创建session和cookie);

服务器如何区分不同浏览器->session是基于cookie实现的。不同的浏览器每次访问都是通过cookie来区分的。没有cookie,就无法获取session。

基本使用

● 获取Session对象,使用request对象

HttpSession 会话 = request.getSession();

● Session 对象提供的功能:

○ 将数据存储在会话字段中

void setAttribute(字符串名称, 对象 o)

○ 根据key获取value

○ Session中可以存储的是Object类型的数据,也就是说Session中可以存储任何数据类型。

对象 getAttribute(字符串名称)

○ 根据key删除键值对

无效删除属性(字符串名称)

会话是在会话中的两个请求之间共享数据的能力。

会话激活和钝化

服务器重启后会话一般不会消失。

● 钝化:服务器正常关闭后,Tomcat 会自动将Session 数据写入硬盘上的文件中。

○ 钝化数据路径为:项目目录\target\tomcat\work\Tomcat\localhost\项目名\SESSIONS.ser

● 激活:重启服务器后,将文件中的数据加载到Session中

○ 数据加载到Session后,该路径下的SESSIONS.ser文件会被删除。

注意

● 会话数据存储在服务器端。服务器重启后,会话数据将被保存。

● 浏览器关闭并启动后,重新建立的连接已经是一个新的会话,获取到的会话数据也是一个新的对象。

● 如果要共享会话数据,则无法关闭浏览器,因此会话数据无法长期保存。

● Cookie 存储在客户端,可以长期保存。

会话被破坏

默认不进行任何操作,30分钟后自动销毁。

● 在项目的web.xml中配置


<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <session-config>
        <session-timeout>100session-timeout>
    session-config>
web-app>

● 如果不配置,默认为30 分钟。默认值硬编码在 Tomcat 的 web.xml 配置文件中。

2.调用Session对象的invalidate()将其销毁

会话和cookie的区别

共同点:

应用场景:

● 购物车:使用cookies来存储

● 显示已登录用户的名称:使用Session 来存储

● 记住我功能:使用cookies来存储

你可能想看:
« 上一篇
下一篇 »

相关推荐

java中什么是冒泡,冒泡算法

2026年09月06日

27阅读

java中冒号,java双冒号

2026年09月06日

26阅读

java中的->,java中的是什么意思

2026年09月06日

24阅读

java中的super用法,Java中super的说明

2026年09月06日

28阅读

java中反射的应用,java中反射的应用场景

2026年09月06日

25阅读

java中开关的定义,Java关键字有哪些

2026年09月06日

25阅读