news 2026/5/9 2:21:12

会话管理_域对象的使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
会话管理_域对象的使用

目录

  • 域对象概述
  • 三大域对象的数据作用范围
  • 域对象的使用

域对象概述

域对象:一些用于存储数据和传递数据的对象,传递数据不同的范围,我们称之为不同的域,不同的域对象代表不同的域,共享数据的范围也不同

  1. 请求域对象是HttpServletRequest,传递数据的范围是一次请求之内及请求转发
  2. 会话域对象是HttpSession,传递数据的范围是一次会话之内,可以跨多个请求
  3. 应用域对象是ServletContext,传递数据的范围是本应用之内,可以跨多个会话

三大域对象的数据作用范围

请求域

会话域

应用域

域对象的使用

域对象的API

API功能
void setAttribute(String name,String value)向域对象中添加/修改数据
Object getAttribute(String name);从域对象中获取数据
removeAttribute(String name);移除域对象中的数据


import jakarta.servlet.ServletContext;import jakarta.servlet.ServletException;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import jakarta.servlet.http.HttpSession;import java.io.IOException;@WebServlet("/servletA")public classServletAextendsHttpServlet{protected voidservice(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{// 向请求域存放数据req.setAttribute("request","requestMessage");// 向会话域中存放数据HttpSession session=req.getSession();session.setAttribute("session","sessionMessage");// 向应用域存放数据ServletContext application=getServletContext();application.setAttribute("application","applicationMessage");// 获取请求域数据String reqMessage=(String)req.getAttribute("request");System.out.println("请求域 = "+reqMessage);// 请求转发req.getRequestDispatcher("servletB").forward(req,resp);}}
import jakarta.servlet.ServletContext;import jakarta.servlet.ServletException;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import jakarta.servlet.http.HttpSession;import java.io.IOException;@WebServlet("/servletB")public classServletBextendsHttpServlet{protected voidservice(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{String reqMessage=(String)req.getAttribute("request");System.out.println("请求域 = "+reqMessage);// 获取会话域中的数据HttpSession session=req.getSession();String sessionMessage=(String)session.getAttribute("session");System.out.println("会话域 = "+sessionMessage);// 获取应用域中的数据ServletContext application=getServletContext();String appMessage=(String)application.getAttribute("application");System.out.println("应用域 = "+appMessage);}}


获取到请求域数据,打印servletA中请求域数据,然后请求转发,再打印

总结:

  1. 请求转发时,请求域可以传递数据
    请求域内一般放本次请求业务有关的数据,如:查询到的所有的部门信息
  2. 同一个会话内,不用请求转发,会话域可以传递数据
    会话域内一般放本次会话的客户端有关的数据,如:当前客户端登录的用户
  3. 同一个app内,不同的客户端,应用域可以传递数据
    应用域内一般放本程序应用有关的数据,如:Spring框架的IOC容器
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 8:45:38

【物理科学和工程技术】物理中的知识体系

一、物理学的基础知识1.1 物理学科物理学的确是一个结构宏大且层次分明的学科,它试图用一套精密的数学语言来描述我们所在世界的根本规律。分类维度主要理论/领域核心研究对象与范畴按理论基础划分 (物理学的主干)​经典物理学宏观世界、低速现象的规律相对论高速运…

作者头像 李华
网站建设 2026/5/8 19:35:31

AI如何简化I2S音频接口开发?快马平台一键生成代码

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 请生成一个完整的I2S音频接口驱动代码,使用STM32 HAL库实现。要求包含以下功能:1) 支持16位/32位数据格式 2) 可配置采样率(44.1kHz/48kHz) 3) 实现DMA双缓冲…

作者头像 李华
网站建设 2026/5/8 0:55:39

Android AAR依赖合并终极指南:模块化开发的完美解决方案

Android AAR依赖合并终极指南:模块化开发的完美解决方案 【免费下载链接】android-fat-aar Gradle script that allows you to merge and embed dependencies in generted aar file 项目地址: https://gitcode.com/gh_mirrors/an/android-fat-aar 在Android开…

作者头像 李华
网站建设 2026/5/3 9:49:40

智能云桌面实时交互:突破远程协作瓶颈的新范式

智能云桌面实时交互:突破远程协作瓶颈的新范式 【免费下载链接】bytebot A containerized framework for computer use agents with a virtual desktop environment. 项目地址: https://gitcode.com/GitHub_Trending/by/bytebot 还在为远程协作的卡顿延迟烦恼…

作者头像 李华
网站建设 2026/5/2 12:19:29

UnixBench测试效率提升:并行化与自动化技巧

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个UnixBench测试加速工具,实现以下功能:1. 将UnixBench测试任务自动分配到多台机器并行执行;2. 自动收集和合并测试结果;3. 提…

作者头像 李华
网站建设 2026/5/7 12:43:29

用AI在1小时内打造定制化JSON分析工具

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个带分析功能的JSON工具原型,包含:1. 基础可视化功能 2. 自动生成数据结构统计(键值类型分布等)3. 提取JSON Schema 4. 发现数…

作者头像 李华