news 2026/7/18 16:30:59

会话管理_域对象的使用

作者头像

张小明

前端开发工程师

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/7/17 20:28:03

Mustard UI终极指南:打造美观高效的现代Web应用

Mustard UI终极指南:打造美观高效的现代Web应用 【免费下载链接】mustard-ui A starter CSS framework that actually looks good. 项目地址: https://gitcode.com/gh_mirrors/mu/mustard-ui 还在为寻找既美观又轻量的CSS框架而烦恼吗?&#x1f9…

作者头像 李华
网站建设 2026/7/18 9:01:12

FaceFusion人脸融合时延优化技巧汇总(GPU+Token双维度)

FaceFusion人脸融合时延优化技巧汇总(GPUToken双维度) 在直播换脸、虚拟偶像生成和AI社交应用层出不穷的今天,用户早已不再满足于“能用”的换脸工具——他们要的是秒级响应、高清输出、多人并发不卡顿。然而现实是,大多数开源Fac…

作者头像 李华
网站建设 2026/7/18 15:46:53

VuePress零基础入门:30分钟搭建个人博客

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 生成一个面向初学者的VuePress教程项目,要求:1) 分步安装指南(Node.js、VuePress) 2) 基础配置文件说明 3) 创建第一篇博客的详细步骤…

作者头像 李华
网站建设 2026/7/17 19:10:01

告别手动安装!自动化部署OLE DB驱动全攻略

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个高效的OLE DB驱动自动化部署工具包,包含:1. PowerShell一键部署脚本 2. 驱动完整性校验模块 3. 多版本兼容处理 4. 部署状态监控 5. 邮件通知功能。…

作者头像 李华
网站建设 2026/7/17 15:19:52

json.load vs 手动解析:效率对比实验

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 编写一个性能测试脚本,比较json.load与手动实现的JSON解析函数在处理不同大小JSON文件时的效率差异。要求:1) 生成测试用的JSON文件(小/中/大) 2) 实现手动解…

作者头像 李华
网站建设 2026/7/18 14:17:46

AI如何帮你轻松掌握tar命令:从基础到高级用法

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个交互式tar命令学习助手,能够:1. 解释tar -cvf等基础命令的参数含义 2. 根据用户需求推荐合适的命令组合 3. 提供常见使用场景的示例 4. 支持错误诊断…

作者头像 李华