news 2026/4/18 3:52:10

会话管理_域对象的使用

作者头像

张小明

前端开发工程师

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/3/14 21:22:07

Linux新手必看:dracut-initqueue错误完全指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个面向Linux新手的交互式学习应用,包含:1. dracut-initqueue错误的动画原理演示;2. 分步骤的图文解决教程;3. 模拟环境练习功能…

作者头像 李华
网站建设 2026/4/15 13:45:18

非Root手机跑Open-AutoGLM有多难?这4个坑你绝对不能踩

第一章:Open-AutoGLM在非Root手机上的运行现状随着轻量化大模型的兴起,Open-AutoGLM 作为一款面向移动端优化的语言推理引擎,正逐步被尝试部署于未获取 Root 权限的消费级安卓设备上。尽管官方推荐在具备系统级权限的环境中运行以获得最佳性能…

作者头像 李华
网站建设 2026/4/7 20:58:10

GraphQL开发工具深度评测:Playground与GraphiQL的实战选择指南

GraphQL开发工具深度评测:Playground与GraphiQL的实战选择指南 【免费下载链接】graphql-playground 🎮 GraphQL IDE for better development workflows (GraphQL Subscriptions, interactive docs & collaboration) 项目地址: https://gitcode.co…

作者头像 李华
网站建设 2026/4/17 5:11:37

GEO智能推广排名系统源码,全在线平台,无忧管理

温馨提示:文末有资源获取方式核心功能概述:智能优先推荐机制本系统的核心在于通过算法驱动,将企业信息无缝整合到AI搜索结果。具体功能包括:实时内容分析以匹配用户查询、动态更新企业数据库确保信息新鲜度、提供多语言支持以覆盖…

作者头像 李华