news 2026/2/2 9:21:49

会话管理_域对象的使用

作者头像

张小明

前端开发工程师

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/1/25 9:22:37

Model2Vec实战指南:高效文本嵌入的终极解决方案

Model2Vec实战指南:高效文本嵌入的终极解决方案 【免费下载链接】model2vec The Fastest State-of-the-Art Static Embeddings in the World 项目地址: https://gitcode.com/gh_mirrors/mo/model2vec Model2Vec作为当前最快的静态嵌入技术,为开发…

作者头像 李华
网站建设 2026/1/24 9:59:04

Reor快捷键终极配置指南:告别冲突,让AI笔记效率翻倍

Reor快捷键终极配置指南:告别冲突,让AI笔记效率翻倍 【免费下载链接】reor Self-organizing AI note-taking app that runs models locally. 项目地址: https://gitcode.com/GitHub_Trending/re/reor 在使用Reor这款本地AI笔记应用时,…

作者头像 李华
网站建设 2026/1/24 9:55:38

Open-AutoGLM离线运行避坑指南(99%新手都会忽略的3个细节)

第一章:Open-AutoGLM离线运行的核心价值在数据安全与系统可控性日益重要的今天,Open-AutoGLM 支持离线部署的特性成为企业级应用的关键优势。通过本地化运行大语言模型,用户能够在不依赖外部云服务的前提下完成自然语言理解、代码生成和智能问…

作者头像 李华
网站建设 2026/1/31 17:34:32

智能体迁移学习技术终极指南:从理论到实践的完整教程

智能体迁移学习技术终极指南:从理论到实践的完整教程 【免费下载链接】hello-agents 📚 《从零开始构建智能体》——从零开始的智能体原理与实践教程 项目地址: https://gitcode.com/datawhalechina/hello-agents 你是否曾经遇到过这样的困境&…

作者头像 李华
网站建设 2026/2/1 1:24:50

Win11环境下VMware Workstation Pro蓝屏修复终极指南

Win11环境下VMware Workstation Pro蓝屏修复终极指南 【免费下载链接】Win11环境下VMwareWorkstationPro运行虚拟机蓝屏修复指南 本资源文件旨在帮助用户在Windows 11环境下解决VMware Workstation Pro运行虚拟机时出现的蓝屏问题。通过安装Hyper-V服务,可以有效避免…

作者头像 李华
网站建设 2026/1/27 14:54:58

用快马平台快速构建dracut故障诊断原型系统

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 使用快马平台快速开发一个dracut故障诊断原型系统,要求包含:1. 日志分析界面;2. 错误模式匹配引擎;3. 修复建议生成器;4.…

作者头像 李华