Spring MVC共享域对象操作

1. 属性(共享)域介绍

在 JavaWeb 中,共享域指的是在 Servlet 中存储数据,以便在同一 Web 应用程序的多个组件中进行共享和访问。常见的共享域有四种:ServletContextHttpSessionHttpServletRequestPageContext

  • ServletContext 共享域:ServletContext 对象可以在整个 Web 应用程序中共享数据,是最大的共享域。一般可以用于保存整个 Web 应用程序的全局配置信息,以及所有用户都共享的数据。在 ServletContext 中保存的数据是线程安全的。
  • HttpSession 共享域:HttpSession 对象可以在同一用户发出的多个请求之间共享数据,但只能在同一个会话中使用。比如,可以将用户登录状态保存在 HttpSession 中,让用户在多个页面间保持登录状态。
  • HttpServletRequest 共享域:HttpServletRequest 对象可以在同一个请求的多个处理器方法之间共享数据。比如,可以将请求的参数和属性存储在 HttpServletRequest 中,让处理器方法之间可以访问这些数据。
  • PageContext 共享域:PageContext 对象是在 JSP 页面Servlet 创建时自动创建的。它可以在 JSP 的各个作用域中共享数据,包括pageScoperequestScopesessionScopeapplicationScope 等作用域。

共享域的作用是提供了方便实用的方式在同一 Web 应用程序的多个组件之间传递数据,并且可以将数据保存在不同的共享域中,根据需要进行选择和使用。

2. Request级别属性(共享)域

2.1 使用 Model 类型的形参

@RequestMapping("/attr/request/model")
@ResponseBody
public String testAttrRequestModel(// 在形参位置声明Model类型变量,用于存储模型数据Model model) {// 我们将数据存入模型,SpringMVC 会帮我们把模型数据存入请求域// 存入请求域这个动作也被称为暴露到请求域model.addAttribute("requestScopeMessageModel","i am very happy[model]");return "target";
}

2.2 使用 ModelMap 类型的形参

@RequestMapping("/attr/request/model/map")
@ResponseBody
public String testAttrRequestModelMap(// 在形参位置声明ModelMap类型变量,用于存储模型数据ModelMap modelMap) {// 我们将数据存入模型,SpringMVC 会帮我们把模型数据存入请求域// 存入请求域这个动作也被称为暴露到请求域modelMap.addAttribute("requestScopeMessageModelMap","i am very happy[model map]");return "target";
}

2.3 使用 Map 类型的形参

@RequestMapping("/attr/request/map")
@ResponseBody
public String testAttrRequestMap(// 在形参位置声明Map类型变量,用于存储模型数据Map<String, Object> map) {// 我们将数据存入模型,SpringMVC 会帮我们把模型数据存入请求域// 存入请求域这个动作也被称为暴露到请求域map.put("requestScopeMessageMap", "i am very happy[map]");return "target";
}

2.4 使用原生 request 对象

@RequestMapping("/attr/request/original")
@ResponseBody
public String testAttrOriginalRequest(// 拿到原生对象,就可以调用原生方法执行各种操作HttpServletRequest request) {request.setAttribute("requestScopeMessageOriginal", "i am very happy[original]");return "target";
}

2.5 使用 ModelAndView 对象

@RequestMapping("/attr/request/mav")
public ModelAndView testAttrByModelAndView() {// 1.创建ModelAndView对象ModelAndView modelAndView = new ModelAndView();// 2.存入模型数据modelAndView.addObject("requestScopeMessageMAV", "i am very happy[mav]");// 3.设置视图名称modelAndView.setViewName("target");return modelAndView;
}

3. Session级别属性(共享)域

@RequestMapping("/attr/session")
@ResponseBody
public String testAttrSession(HttpSession session) {//直接对session对象操作,即对会话范围操作!return "target";
}

4. Application级别属性(共享)域

解释:springmvc会在初始化容器的时候,将servletContext对象存储到ioc容器中!

@Autowired
private ServletContext servletContext;@RequestMapping("/attr/application")
@ResponseBody
public String attrApplication() {servletContext.setAttribute("appScopeMsg", "i am hungry...");return "target";
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/746568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode28.找出字符串中第一个匹配项

28.找出字符串中第一个匹配项 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 示例 1&#xff1a; 输入…

C++中的C标准库、注释和条件编译

C中的C标准库、注释和条件编译 C标准库 C作为一种在C语言基础上发展起来的编程语言&#xff0c;保留了对C语言标准库的完整支持。这些C标准库提供了一系列的通用功能&#xff0c;如输入输出处理、字符串操作、数学计算等&#xff0c;允许C程序员利用已经熟悉的库来开展工作。…

虾皮Shopee根据ID取商品详情API

在构建电商平台的第三方应用或服务时&#xff0c;开发者经常需要通过编程方式获取商品的详细信息。对于虾皮Shopee平台来说&#xff0c;其提供的API接口使得这一需求得以实现。本文将详细介绍如何调用虾皮Shopee的API接口&#xff0c;根据商品ID获取其商品详情。 准备工作 在…

“优化消费环境 维护消费者权”荥阳市城关乡社工站开展3·15宣传志愿活动

又是一年“315”&#xff0c;为提高辖区群众消费维权意识&#xff0c;让他们可以学会运用政策法律知识维护自身合法权益&#xff0c;同时也为营造出辖区良好营商环境。2024年3月15日&#xff0c;在荥阳市民政局、荥阳市市场监督管理局、城关乡人民政府的支持下&#xff0c;城关…

“值此春意,共享蓝天”—携手植新绿·静待成荫时

种竹交加翠&#xff0c;栽桃烂漫红。——唐杜甫《春日江村》 春风十里&#xff0c;万物生长。春风吹拂绿色现&#xff0c;树吐嫩芽花鲜艳。植树正是好季节&#xff0c;男女老少齐挥铲。种下棵棵小树苗&#xff0c;辛勤培育勤浇灌。来年长成苍天木&#xff0c;绿树成荫美景见。 …

基于ElasticSearch存储海量AIS数据:时空立方体索引篇

文章目录 引言I 时间维切分II 空间范围切分引言 索引结构制约着查询请求的类型和处理方式,索引整体架构制约着查询请求的处理效率。随着时间推移,AIS数据在空间分布上具备局部聚集性,如 果简单地将所有AIS数据插入一个索引结构,随着数据量增长,索引的更新效率、查询效率及…

「字幕之美:解析硬、软、外挂,探寻视频世界的无声艺术」

硬字幕、软字幕与外挂字幕&#xff1a;概述 硬字幕、软字幕和外挂字幕是视频内容中常见的三种字幕形式&#xff0c;它们在提供文字信息的同时&#xff0c;为观众提供了更丰富的观看体验。下面将对这三种字幕进行概述&#xff1a; 硬字幕&#xff08;Hard Subtitles&#xff0…

RabbitMQ 模拟实现【六】:程序模拟实现

文章目录 模拟实现模拟消费者模拟生产者效果展示 启动结果如下&#xff1a; ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/71841546ad8043f1bd51e4408df791de.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f6e3e72ff9a4483c978ec48e24f075c2.p…

OceanBase原理之内存管理

第1章 前言 1.1 多租户管理简介 OceanBase数据库中&#xff0c;应用了单集群多租户的设计&#xff0c;使得一个集群内能够创建多个彼此独立的租户。在OceanBase数据库&#xff0c;租户成为了资源分配的单位&#xff0c;同时还是数据库对象管理和资源管理的基础。 在某种程度…

桌面备忘录,电脑桌面备忘录怎么设置

在当今快节奏的生活中&#xff0c;备忘录成为了人们工作和生活中不可或缺的工具。然而&#xff0c;随着科技的发展&#xff0c;纸质备忘录逐渐被电子桌面备忘录所取代。在电脑桌面设置备忘录&#xff0c;可以更加高效地管理任务和提醒事项。 电脑桌面是我们日常工作和娱乐的主…

2024年语言艺术、人文发展与教育国际会议(ICLAHDE2024)

2024年文学、历史与艺术设计国际会议(ICLHAD2024) 一、【会议简介】 2024年国际语言艺术、人文发展与教育会议&#xff08;ICLAHDE2024&#xff09;将在中国昆明举行&#xff0c;主题为“语言、人文与艺术”。ICLAHDE汇集了来自世界各地语言艺术、人类发展和教育领域的学者、工…

UE5C++学习(二)--- 角色简单连击

本文记录一下一个简单的角色基础连招。 它的做法就是&#xff1a;我们鼠标左键连续按下&#xff0c;会有一个动画蒙太奇索引去计数&#xff0c;获取到对应的蒙太奇动画数组中指定下标的攻击蒙太奇动画&#xff0c;然后进行播放&#xff1b;在播放的过程中用StartAttack()骨骼通…

刚刚拿到某安全公司「代码审计岗位」面试题

刚刚拿到&#xff0c;某安全公司「代码审计岗位」的面试题&#xff0c;让小编瞬间感到一股紧张又兴奋的情绪涌上心头。 代码审计&#xff0c;这个在信息安全领域里举足轻重的岗位&#xff0c;它要求的不仅仅是过硬的技术实力&#xff0c;更需要对细节敏锐的洞察力和对安全漏洞…

常见的软件系统性能测试指标

常见的软件系统性能测试指标 衡量一个软件系统性能的好坏&#xff0c;在性能测试中会使用一些性能指标来进行分析和描述&#xff0c;以下是一些最常用的性能指标。 1.2.1 响应时间 请求或者某个操作从发出的时间到收到服务器响应的时间的差值就是响应时间。在性能测试中&am…

LeetCode题练习与总结:搜索插入位置

一、题目 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 二、解题思路 初始化两个指针&#xff0c;left 指向数组…

微信小程序--开启下拉刷新页面

1、下拉刷新获取数据enablePullDownRefresh 开启下拉刷新&#xff1a; enablePullDownRefreshbooleanfalse是否开启当前页面下拉刷新 案例&#xff1a; 下拉刷新&#xff0c;获取新的列表数据,其实就是进行一次新的网络请求&#xff1a; 第一步&#xff1a;在.json文件中开…

AI程序员Devin会在6个方面影响人类程序员

讲动人的故事&#xff0c;写懂人的代码 初创公司Cognition最近所发布的世界上首个AI程序员Devin&#xff0c;让人类程序员百感交集。因为Devin能自动干下面的事情&#xff1a; 自己学习不熟悉的技术&#xff1b; 端到端地自己搭建和部署应用程序&#xff1b; 自己找出并修复…

如何根据主机监听端口号查找到对应docker容器

如何根据主机监听端口号查找到对应docker容器 问题描述 使用了一个端口是31883&#xff0c;这是个mq的端口号&#xff0c;但是怎么都找不到是哪个docker容器启用的 问题尝试解决 使用命令lsof -i:31883 如图 然后接着使用 ps -ef|grep 1128796&#xff0c;如图根本查不出来任…

扩展资料主机名到IP地址的有两种方式:DNS

中国联通的DNS地址有两种。 主 DNS 为“210.21.4.130”&#xff0c;备用 DNS 为“221.5.88.88”。 每个 IP 地址可以有一个主机名。 主机名由一串或多串字符组成。 用小数点分隔字符串。 对于中国联通宽带用户&#xff0c;主DNS设置为&#xff1a;210.21.4.130&#xff0c;备用…

c++ 面试100个题目中的编程题目

88、下列程序的运行结果是? #include <stdlib.h> #include <stdio.h> #include <string.h> #include <iostream> const char* str = "vermeer"; using namespace std; int main(){ const char* pstr = str;cout << "The add…