SpringMVC-域对象共享数据

文章目录

  • 域对象共享数据
    • 一、三种域对象
    • 二、通过ServletAPI向Request域对象共享数据
    • 三、使用ModelAndView向Request域对象共享数据
    • 四、使用Model向Request域对象共享数据
    • 五、使用Map向Request域对象共享数据
    • 六、使用ModelMap向Request域对象共享数据
    • 七、向Session域对象共享数据
    • 八、向Application域对象共享数据

域对象共享数据

一、三种域对象

ServletContext域对象是一个全局性的域对象,它的生命周期与Web应用程序的生命周期一致,即当Web应用程序被加载时,与之对应的ServletContext对象会被创建;只要Web应用程序还存在,这个域对象就会一直存在;当Web应用程序被卸载或者服务器关闭时,ServletContext对象也会随之消亡。ServletContext域对象的主要作用是提供一种机制,允许开发者在其内部设置和获取数据,这些数据可以在整个Web应用程序的范围内共享。它提供了一些API,如setAttribute(String key, Object value)getAttribute(String key)以及removeAttribute(String key)等方法来实现这些功能。

Request域对象也是一个域对象,它主要用于处理一次HTTP请求。它的生命周期与本次请求相关,一旦请求结束,Request对象也就不再存在了。Request域对象的主要用途是在处理请求时保存和传递数据。它同样提供了一些API,如setAttribute(String name, Object value),用于在请求间共享数据,以及在请求结束后清除这些数据。

Session域对象则专门用于处理一次HTTP会话。它会随着会话的建立而创建,并在会话结束时销毁。Session域对象的主要目的是保存用户的状态信息,以便在整个会话期间为不同的请求提供相同的用户状态。它也提供了一些API,如setAttribute(String name, Object value),用于在会话间共享数据,以及removeAttribute(String name)用于清除会话结束时的数据

二、通过ServletAPI向Request域对象共享数据

2.1.request共享数据
控制类

  @RequestMapping("servletAPI")public String servletApi(HttpServletRequest request){request.setAttribute("testscope","hello,world!");return "scope";}

界面
对于request,可以直接使用变量名来访问

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><p th:text="${testscope}"></p>
</body>
</html>

三、使用ModelAndView向Request域对象共享数据

返回类型必须是ModelAndView

 @RequestMapping("ModelAndView")public ModelAndView testModelAndView(){ModelAndView modelAndView =new ModelAndView();//向request域共享数据modelAndView.addObject("testscope","hello,ModelAndView!");//设置视图名称 转发到scope.html页面modelAndView.setViewName("scope");return modelAndView;}
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><p th:text="${testscope}"></p>
</body>
</html>

四、使用Model向Request域对象共享数据

 @RequestMapping("model")public String model(Model model){model.addAttribute("testscope","hello,Model!");return "scope";}
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><p th:text="${testscope}"></p>
</body>
</html>

五、使用Map向Request域对象共享数据

@RequestMapping("map")public String map(Map<String, Object> map){map.put("testscope","hello,Map!");return "scope";}
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><p th:text="${testscope}"></p>
</body>
</html>

六、使用ModelMap向Request域对象共享数据

 @RequestMapping("modelMap")public String modelMap(ModelMap map){map.addAttribute("testscope","hello,ModelMap!");return "scope";}
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><p th:text="${testscope}"></p>
</body>
</html>

七、向Session域对象共享数据

  @RequestMapping("session")public  String testsession(HttpSession session){session.setAttribute("testscope","hello,Session!");return "scope";}
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><p th:text="${testscope}"></p>
<p th:text="${session.testscope}"></p>
</body>
</html>

八、向Application域对象共享数据

@RequestMapping("application")public String testapplication(HttpSession session){ServletContext application = session.getServletContext();application.setAttribute("testscope","hello,application!");return "scope";}
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><p th:text="${testscope}"></p>
<p th:text="${application.testscope}"></p>
</body>
</html>

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

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

相关文章

go-zero配置DB的redis缓存

配置定义&#xff1a; # cat internal/config/config.go package configimport ("github.com/zeromicro/go-zero/rest""github.com/zeromicro/go-zero/core/stores/cache" )type Config struct {rest.RestConfCacheRedis cache.CacheConf }对应的配置文件…

项目中遇到通过域名访问服务提示 Service name unknow

目录 项目中遇到通过域名访问服务提示 Service name unknow 1.问题描述2.问题原因3.解决思路4.解决方案文章所属专区 项目问题解决 1.问题描述 在CentOS 系统环境下 项目中遇到通过域名访问服务提示 Service name unknow,但是 网络是连通的 通过ping 和telnet都能够验证。 …

再学webpack

1 优化 webpack 打包体积的思路 优化 webpack 打包体积的思路包括&#xff1a; 提取第三方库或通过引用外部文件的方式引入第三方库&#xff1a;将第三方库单独打包&#xff0c;并通过 CDN 引入&#xff0c;减少打包体积。使用代码压缩插件&#xff1a;例如 UglifyJsPlugin&a…

GBASE南大通用分享-linux centos下安装dokuwiki

GBASE南大通用分享 首先先大致介绍一下wiki&#xff1a; DokuWiki是一个开源wiki引擎程序&#xff0c;运行于PHP环境下。Doku Wiki 程序小巧而功能强大、灵活&#xff0c;适合中小团队和个人网站知识库的管理。 DokuWiki可以与多种CMS程序进行整合&#xff0c;例如WordPress…

【江科大】STM32:外部中断(Extern Interrupt)

文章目录 EXTI&#xff08;Extern Interrupt&#xff09;外部中断EXIT的基本结构EXIT框图 旋转编码器简介库函数&#xff1a;对射式红外传感器计次&#xff1a;代码展示&#xff1a;旋转编码器计次注意&#xff1a; EXTI&#xff08;Extern Interrupt&#xff09;外部中断 功能…

STM32标准库开发—W25Q64详细介绍

W25Q64简介 Flash编程原理都是只能将1写为0&#xff0c;而不能将0写成1.所以在Flash编程之前&#xff0c;必须将对应的块擦除&#xff0c;而擦除的过程就是将所有位都写为1的过程&#xff0c;块内的所有字节变为0xFF.因此可以说&#xff0c;编程是将相应位写0的过程&#xff0c…

Codewave学习体验分享:低代码开发世界的黑马

前言 Codewave平台介绍 CodeWave智能低代码开发平台基于网易自研拥有大规模参数和深度学习能力的智能模型底座产品架构,为企业级应用提供更加智能化研发的软件生产方式,IT人员可以轻易实现从“智能生成”到“可视化拖拽调整”的全栈低代码应用搭建,让复杂应用开发更加高效,加快…

2024年半导体存储领域的发展趋势

2024年半导体存储领域的发展趋势将呈现出多元且深刻的变化。以下是五大主要内存趋势&#xff1a; 内存价格上涨&#xff1a;随着市场供需调整&#xff0c;半导体内存价格在2023下半年开始预期上涨&#xff0c;并将在2024年持续攀升。Gartner预计内存市场总体增长66.3%&#xff…

Flink生产环境相关问题

1. FlinkKafka保证精确一次消费相关问题&#xff1f; Fink的检查点和恢复机制和可以重置读位置的source连接器结合使用&#xff0c;比如kafka&#xff0c;可以保证应用程序不会丢失数据。尽管如此&#xff0c;应用程序可能会发出两次计算结果&#xff0c;因为从上一次检查点恢…

Azure Private endpoint DNS 记录是如何解析的

Private endpoint 从本质上来说是Azure 服务在Azure 虚拟网络中安插的一张带私有地址的网卡。 举例来说如果Storage account在没有绑定private endpoint之前&#xff0c;查询Storage account的DNS记录会是如下情况&#xff1a; Seq Name …

Java 字符串 06 练习-字符串拼接、反转、金额转换(黑马)

代码&#xff1a; //import java.util.Scanner; public class practice{public static void main(String[] args) {int arr [] {1,2,3,4};String str arrToString(arr);System.out.println(str);}public static String arrToString(int [] arr){if(arrnull){return "&q…

(27)Linux信号的产生核心转储---初步认识信号

一、信号入门 1. 生活角度的信号 你在网上买了很多件商品&#xff0c;再等待不同商品快递的到来。但即便快递没有到来&#xff0c;你也知道快递来临时&#xff0c; 你该怎么处理快递。也就是你能“识别快递”当快递员到了你楼下&#xff0c;你也收到快递到来的通知&#xff0…

ChatGPT4账号升级心得

背景 之前使用的是outlook邮箱注册的账号&#xff0c;虽然有时候会出现Unauthorized的问题&#xff0c;但是基本上可以勉强使用&#xff0c;整体感觉还是挺好用的&#xff0c;虽然有时候会自信满满的胡言乱语哈哈哈。后面看到GPT4融合了多模态&#xff0c;于是就想把chatGPT3.…

docker 体验怀旧游戏(魂斗罗等)

docker run --restart always -p 8081:80 --name fc-games -d registry.cn-hangzhou.aliyuncs.com/bystart/fc-games:latest ip:8081访问 jsnes: js制作了一个网页版的NES模拟&#xff0c;可以在网页上玩fc游戏 (gitee.com)

git用法总结

以gitee为例&#xff0c;GitHub也可参考本文 创建远程仓库 在自己的gitee主页 创建本地仓库 在文件夹下&#xff0c;右键→git bash here git init添加gitignore vi .gitignoregitignore里的内容根据自己实际情况设置&#xff0c;这里举个例子 # #开头的是注释 # Prer…

MiniTab的单值的变量控制图——I-MR 控制图分析

单值的变量控制图分为&#xff1a;I-MR 控制图、Z-MR 控制图、单值控制图、移动极差控制图4种。 I-MR 控制图 功能菜单请选择&#xff1a;统计>控制图>单值的变量控制图>I-MR。 使用 I-MR 控制图 可以在拥有连续数据且这些数据是不属于子组的单个观测值的情况下监视…

1 月 24日算法练习

文章目录 N皇后小朋友崇拜圈全球变暖 N皇后 问题描述&#xff1a;N皇后问题是一个以国际象棋为背景的问题&#xff0c; 如何能够在 NN 的国际象棋棋盘上放置N个皇后&#xff0c;使得任何一个皇后都无法直接吃掉其他的皇后&#xff1f;为了达到此目的&#xff0c;任两个皇后都不…

HarmonyOS漫谈---套壳安卓还是套壳苹果?HarmonyOS更像谁?

2020年以前华为手机的操作系统是EMUI,这个是在Android基础上扩展而来的,版本和android几乎一致,和市面上其它android手机厂家搭载的系统并无本质不同 2019年5月16日,美国针对华为发起了第一轮制裁。8月华为发布了HarmonyOS1.0,此时还只是主要在IOT设备上使用,智慧屏成为…

【水文】石头剪刀布

#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int player, computer; srand((unsigned int)time(NULL)); printf("石头剪刀布游戏开始了&#xff01;\n"); printf("请猜拳&#xff1a;\n"); printf("…

探索 DevOps 中的自动化技术

DevOps 是一种强调开发与 IT 运营之间合作的软件开发范式&#xff0c;主要依靠自动化来优化流程、提高生产力并确保及时、可靠的软件交付。以下是对 DevOps 不可或缺的关键自动化技术的探索&#xff1a; 1.持续集成/持续部署&#xff08;CI/CD&#xff09; 在 DevOps 领域&…