当前位置: 首页 > news >正文

【SpringMVC】SpringMVC方式,向作用域对象共享数据(ModelAndView、Model、map、ModelMap)

在这里插入图片描述

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~

在这里插入图片描述

向域对象共享数据

  • 一、使用 原生ServletAPI
  • 二、使用 ModelAndView
  • 三、使用Model
  • 四、使用map
  • 五、使用ModelMap
  • 六、Model、ModelMap、Map的关系
  • 七、向session域、application域 共享数据(补充)



一、使用 原生ServletAPI


  • HttpServletRequest.setAttribute()方法 将数据共享至请求作用域(request域);
/*** @author .29.* @create 2023-03-05 15:30*/
@Controller
public class ScopeController {//使用原生ServletAPI 向请求作用域共享数据@RequestMapping(value = "/testRequestByServletAPI")public String testRequestByServletAPI(HttpServletRequest request){request.setAttribute("testRequestScope","use-ServletAPI-setAttribute(request请求作用域)");return "success";}
}



二、使用 ModelAndView


  • ModelAndView有Model和View的功能;
  • Model主要用于向请求域共享数据;
  • View主要用于设置视图,实现页面跳转;

  • ModelAndView 相关方法
  • ModelAndView.addObject() : 处理模型数据,即:向request请求作用域 共享数据
  • ModelAndView.setViewName() : 设置视图名称
/*** @author .29.* @create 2023-03-05 15:30*/
@Controller
public class ScopeController {//SpringMVC方式:通过ModelAndView,向请求作用域共享数据@RequestMapping(value = "/testModelandView")public ModelAndView testModelAndView(){ModelAndView mdv = new ModelAndView();//addObject() : 处理模型数据,即:向request请求作用域 共享数据mdv.addObject("testRequestScope","use-ModelAndView-setAttribute(request请求作用域)");//setViewName() : 设置视图名称mdv.setViewName("success");return mdv;     //设置完视图名称后,返回ModelAndView对象即可。}}



三、使用Model


  • Model对象,作为请求控制器方法的形参;
  • Model.addAttribute()方法,将数据共享至请求作用域(request域);
/*** @author .29.* @create 2023-03-05 15:30*/
@Controller
public class ScopeController {//SpringMVC方式:通过Model,向请求作用域共享数据@RequestMapping(value = "/testModel")public String testModel(Model model){model.addAttribute("testRequestScope","use-Model-setAttribute(request请求作用域)");System.out.println("model:"+model);System.out.println(model.getClass().getName());return "success";}



四、使用map


  • Map对象,作为请求控制器方法的形参;
  • Map.put()方法,将数据共享至请求作用域(request域);
/*** @author .29.* @create 2023-03-05 15:30*/
@Controller
public class ScopeController {///SpringMVC方式:通过map,向请求作用域共享数据@RequestMapping(value = "/testMap")public String testMap(Map<String,Object> map){map.put("testRequestScope","use-Map-setAttribute(request请求作用域)");System.out.println("map:"+map);System.out.println(map.getClass().getName());return "success";}}



五、使用ModelMap


  • ModelMap对象,作为请求控制器方法的形参;
  • ModelMap.addAttribute()方法,将数据共享至请求作用域(request域);
/*** @author .29.* @create 2023-03-05 15:30*/
@Controller
public class ScopeController {///SpringMVC方式:通过ModelMap,向请求作用域共享数据@RequestMapping(value = "/testModelMap")public String testModelMap(ModelMap modelMap){modelMap.addAttribute("testRequestScope","use-ModelMap-setAttribute(request请求作用域)");System.out.println("modelMap:"+modelMap);System.out.println(modelMap.getClass().getName());return "success";}}



六、Model、ModelMap、Map的关系


  • Model、ModelMap、Map类型的参数其实本质上都是 BindingAwareModelMap 类型的
    /*** Model、ModelMap、Map的关系 :* Model、ModelMap、Map类型的参数其实本质上都是 BindingAwareModelMap 类型的* public interface Model{}* public class ModelMap extends LinkedHashMap<String, Object> {}* public class ExtendedModelMap extends ModelMap implements Model {}* public class BindingAwareModelMap extends ExtendedModelMap {}*/


七、向session域、application域 共享数据(补充)


/*** @author .29.* @create 2023-03-05 15:30*/
@Controller
public class ScopeController {//用原生ServletAPI,向session作用域共享数据@RequestMapping(value = "/testSession")public String testSession(HttpSession session){session.setAttribute("testSessionScope","use-ServletAPI-setAttribute(session作用域)");return "success";}//用原生ServletAPI,向session作用域共享数据@RequestMapping(value = "/testApplication")public String testApplication(HttpSession session){ServletContext application = session.getServletContext();application.setAttribute("testApplicationScope","use-ServletAPI-setAttribute(Application作用域)");return "success";}}

在这里插入图片描述

相关文章:

【SpringMVC】SpringMVC方式,向作用域对象共享数据(ModelAndView、Model、map、ModelMap)

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 向域对象共享数据一、使用 原生ServletAPI二、…...

本科课程【移动互联网应用开发(Android开发)】实验3 - Activity及数据存储

大家好,我是【1+1=王】, 热爱java的计算机(人工智能)渣硕研究生在读。 如果你也对java、人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!! Good better best, never let it rest, until good is better, and better best. 近期会把自己本科阶段的一些课程设计、实验报…...

为何在 node 项目中使用固定版本号,而不使用 ~、^?

以语雀 文档为准 使用 ~、^ 时吃过亏希望版本号掌握在自己手里&#xff0c;作者自己升级&#xff08;跟随官方进行升级&#xff0c;就算麻烦作者&#xff0c;也不想麻烦使用者&#xff09;虽然 pnpm 很好用&#xff0c;但是不希望在项目中用到&#xff08;临时性解决问题可以选…...

leetcode -- 876.链表的中间节点

文章目录&#x1f428;1.题目&#x1f407;2. 解法1-两次遍历&#x1f340;2.1 思路&#x1f340;2.2 代码实现&#x1f401;3. 解法2-快慢指针&#x1f33e;3.1 思路&#x1f33e;3.2 **代码实现**&#x1f42e;4. 题目链接&#x1f428;1.题目 给你单链表的头结点head&#…...

企业网络安全防御策略需要考虑哪些方面?

随着企业数字化转型的加速&#xff0c;企业网络安全面临越来越多的威胁。企业网络安全不仅仅关乎企业数据的安全&#xff0c;还关系到企业的声誉和利益&#xff0c;因此&#xff0c;建立全面的网络安全防御策略至关重要。 企业网络安全防御策略的实现需要考虑以下几个方面&…...

文心一言 vs. GPT-4 —— 全面横向比较

文心一言 vs. GPT-4 —— 全面横向比较 3月15日凌晨&#xff0c;OpenAI发布“迄今为止功能最强大的模型”——GPT-4。我第一时间为大家奉上了体验报告《OpenAI 发布GPT-4——全网抢先体验》。 时隔一日&#xff0c;3月16日下午百度发布大语言模型——文心一言。发布会上&…...

【进阶数据结构】二叉搜索树经典习题讲解

&#x1f308;感谢阅读East-sunrise学习分享——[进阶数据结构]二叉搜索树 博主水平有限&#xff0c;如有差错&#xff0c;欢迎斧正&#x1f64f;感谢有你 码字不易&#xff0c;若有收获&#xff0c;期待你的点赞关注&#x1f499;我们一起进步 &#x1f308;我们在之前已经学习…...

PyTorch 之 神经网络 Mnist 分类任务

文章目录一、Mnist 分类任务简介二、Mnist 数据集的读取三、 Mnist 分类任务实现1. 标签和简单网络架构2. 具体代码实现四、使用 TensorDataset 和 DataLoader 简化本文参加新星计划人工智能(Pytorch)赛道&#xff1a;https://bbs.csdn.net/topics/613989052 一、Mnist 分类任…...

如何实现用pillow库来实现给图片加滤镜?

使用Pillow库可以非常容易地给图片加滤镜。Pillow库是Python图像处理的一个强大库&#xff0c;提供了多种滤镜效果&#xff0c;如模糊、边缘检测、色彩增强等。 下面是使用Pillow库实现给图片加滤镜的简单步骤&#xff1a; 安装Pillow库&#xff1a;首先需要安装Pillow库。可…...

微分中值定理

极值 目录 极值 费马引理 ​编辑 罗尔定理 拉格朗日中值定理 例题&#xff1a; 例2 例3 两个重要结论&#xff1a; ​编辑 柯西中值定理&#xff1a; 如何用自己的语言理解极值呢&#xff1f; 极大值和极小值的类似&#xff0c;我们不再进行说明 极值点有什么特点吗&…...

redis 存储一个map 怎么让map中其中一个值设置过期时间,而不是过期掉整个map?

文章目录 redis 存储一个map 怎么让map中其中一个值设置过期时间,而不是过期掉整个map?Java 中 怎么 实现?方案一: Jedis方案二: Lettuce方案三: Redisson方案四: Jedisson方案五: RedisTemplate那种方式 效率最高 ?拓展:结语redis 存储一个map 怎么让map中其中一个值设置过…...

LeetCode:704. 二分查找

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; &#x1f33b;算法&#xff0c;不如说它是一种思考方式&#x1f340;算法专栏&#xff1a; &#x1f449;&#x1f3fb;123 一、&#x1f331;704. 二分查找 题目描述&#xff1a;给定一个 n 个元素有序的&#xff…...

Java 到底是值传递还是引用传递?

C 语言是很多变成语言的母胎&#xff0c;包括 Java。对于 C 语言来说&#xff0c;所有的方法参数都是通过 “值” 传递的&#xff0c;也就是说&#xff0c;传递给被调用方法的参数值存放在临时变量中&#xff0c;而不是存放在原来的变量中。这就意味着&#xff0c;被调用的方法…...

Apollo 配置变更原理

我们经常用到apollo的两个特性&#xff1a;1.动态更新配置&#xff1a;apollo可以动态更新Value的值&#xff0c;也可以修改environment的值。2.实时监听配置&#xff1a;实现apollo的监听器ConfigChangeListener&#xff0c;通过onChange方法来实时监听配置变化。你知道apollo…...

聊聊「订单」业务的设计与实现

订单&#xff0c;业务的核心模块&#xff1b; 一、背景简介 订单业务一直都是系统研发中的核心模块&#xff0c;订单的产生过程&#xff0c;与系统中的很多模块都会高度关联&#xff0c;比如账户体系、支付中心、运营管理等&#xff0c;即便单看订单本身&#xff0c;也足够的复…...

血细胞智能检测与计数软件(Python+YOLOv5深度学习模型+清新界面版)

摘要&#xff1a;血细胞智能检测与计数软件应用深度学习技术智能检测血细胞图像中红细胞、镰状细胞等不同形态细胞并可视化计数&#xff0c;以辅助医学细胞检测。本文详细介绍血细胞智能检测与计数软件&#xff0c;在介绍算法原理的同时&#xff0c;给出Python的实现代码以及Py…...

高速PCB设计指南(十五)

掌握IC封装的特性以达到最佳EMI抑制性能 将去耦电容直接放在IC封装内可以有效控制EMI并提高信号的完整性&#xff0c;本文从IC内部封装入手&#xff0c;分析EMI的来源、IC封装在EMI控制中的作用&#xff0c;进而提出11个有效控制EMI的设计规则&#xff0c;包括封装选择、引脚结…...

GPT-4:我不是来抢你饭碗的,我是来抢你锅的

目录 一、GPT-4&#xff0c;可媲美人类 二、它和ChatGPT 有何差别&#xff1f; 01、处理多达2.5万字的长篇内容 02、分析图像的能力&#xff0c;并具有「幽默感」 03、生成网页 三、题外话 四、小结 GPT-4的闪亮登场&#xff0c;似乎再次惊艳了所有人。 看了GPT-4官方的…...

Scala环境安装【傻瓜式教程】

文章目录安装scala环境依赖Java环境安装下载sacla的sdk包安装Scala2.12检查安装是否成功idea配置idea安装scala插件项目配置新建maven项目添加框架支持选择scala创建测试类安装scala环境依赖 Java环境安装 sacla环境安装之前需要先确认Java jdk安装完成 java具体安装步骤略&…...

js实现一个简单的扫雷

目录先看下最终的效果&#xff1a;首先来分析一个扫雷游戏具有哪些功能分析完成后我们就开始一步步的实现1. 相关html和css2. 我们使用类来完成相应功能3. 之后我们则是要定义一个地图4. 对地图进行渲染5. 对开始按钮添加点击事件6. 现在我们可以实现鼠标左击扫雷的功能7. 给单…...

保姆级教程:用Docker快速部署FreeSWITCH的ASR服务(含FunASR、sherpa-ncnn)

基于Docker的FreeSWITCH语音识别服务实战指南 语音识别&#xff08;ASR&#xff09;技术正在重塑通信系统的交互方式。对于FreeSWITCH开发者而言&#xff0c;将高效ASR服务集成到电话系统中&#xff0c;可以解锁语音指令控制、实时字幕生成、智能客服等创新应用场景。Docker技术…...

QT老版本下载被拒?手把手教你用迅雷搞定5.12.12和4.8.7离线安装包

QT老版本下载难题破解&#xff1a;从地址拼接到离线安装全指南 遇到QT老版本下载被拒的提示&#xff1f;别急着放弃。对于需要维护遗留系统或确保项目兼容性的开发者来说&#xff0c;获取特定版本的QT框架往往成为一道必须跨越的门槛。本文将带你深入理解QT官方下载机制&#…...

Driver Store Explorer:Windows驱动管理的终极免费解决方案,轻松释放10GB+磁盘空间

Driver Store Explorer&#xff1a;Windows驱动管理的终极免费解决方案&#xff0c;轻松释放10GB磁盘空间 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Driver Store Explorer&#x…...

ESP芯片烧录终极指南:5分钟掌握esptool.py完整操作流程

ESP芯片烧录终极指南&#xff1a;5分钟掌握esptool.py完整操作流程 【免费下载链接】esptool Serial utility for flashing, provisioning, and interacting with Espressif SoCs 项目地址: https://gitcode.com/gh_mirrors/es/esptool ESP芯片烧录工具esptool.py是Espr…...

AI Agent不是你以为的那样

系列&#xff1a;《AI Agent 从原理到实战 —— 解密 Claude Code 背后的工程智慧》 第1篇引言 你大概有过这样的体验&#xff1a;打开 ChatGPT&#xff0c;说一句"帮我写封邮件&#xff0c;拒绝周五的会议邀请&#xff0c;语气委婉一点"&#xff0c;几秒钟后一封措辞…...

行业研究报告怎么选:看清咨询公司的“真本事”

一、为什么大家都在找“靠谱的行业研究报告”这几年&#xff0c;不论是创业公司做战略决策&#xff0c;还是大型企业布局新业务&#xff0c;几乎都有一个共识——决策要有数据、有研究、有趋势支撑。于是&#xff0c;“行业研究报告”成了商业决策的必备工具&#xff0c;但市场…...

2026年3月Github开源项目精选Top10

&#x1f4c5;统计周期&#xff1a;2026-02-28 ~ 2026-03-29 &#x1f30b;数据来源&#xff1a;www.ffgithub.com &#x1f4da;数据更新&#xff1a;2026-03-29 Top1. 666ghj/MiroFish &#x1f53a; 总星标数量&#xff1a;43670⭐&#x1f53a; 周增长数量&#xff1a;63…...

Vim编辑器的.swp文件:安全隐患与防范措施全解析

Vim编辑器.swp文件安全风险深度剖析与实战防护指南 当你深夜加班修改服务器配置文件时&#xff0c;突然断电导致Vim异常退出。第二天发现.nginx.conf.swp文件被恶意用户下载&#xff0c;内含未保存的数据库密码——这种场景在运维工作中并不罕见。.swp文件作为Vim的自动备份机制…...

OpenClaw本地模型对比:千问3.5-35B-A3B-FP8与开源替代方案

OpenClaw本地模型对比&#xff1a;千问3.5-35B-A3B-FP8与开源替代方案 1. 为什么需要本地模型对比 当我第一次尝试在OpenClaw中接入本地大模型时&#xff0c;面对众多开源选项感到非常困惑。每个模型都宣称自己性能优越&#xff0c;但实际部署后却发现资源消耗、推理速度与预…...

技术赋能B端拓客:号码核验行业的迭代与价值升级,氪迹科技法人股东号码核验系统,阶梯式价格

2026年&#xff0c;B端市场竞争进入白热化阶段&#xff0c;拓客逻辑已从“规模扩张”转向“价值深耕”&#xff0c;“精准、高效、低成本”成为所有拓客团队的核心追求。号码核验作为B端拓客的前置基础性环节&#xff0c;其服务质量直接决定线索价值、人力效能与投入回报比&…...