《Spring MVC》 第四章 域对象、视图、转发和重定向

news2024/11/17 17:30:10

前言

介绍Spring MVC的域对象、视图、转发和重定向

1、域对象共享数据

Spring MVC 提供了多种域对象共享数据的方式,其中最常用的方式如下:

1.1、使用 Servlet API 向 request 域对象中共享数据

服务端代码:

@RequestMapping("toLogin")
public String toLogin(HttpServletRequest request){
    request.setAttribute("welcome","hello tiger!");
    return "login";
}

前端代码:

<h1 th:text="${welcome}"></h1>

1.2、使用 ModelAndView 向 request 域对象中共享数据

服务端代码:

@RequestMapping("toLogin")
public ModelAndView toLogin(){
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject("welcome","hello tiger!");
    modelAndView.setViewName("login");
    return modelAndView;
}

前端代码:

<h1 th:text="${welcome}"></h1>

1.3、使用 Model 向 request 域对象中共享数据

@RequestMapping("toLogin")
public String toLogin(Model model){
    model.addAttribute("welcome","hello tiger!");
    return "login";
}

1.4、使用 Map 向 request 域对象中共享数据

@RequestMapping("toLogin")
public String toLogin(Map<String,Object> map){
    map.put("welcome","hello tiger!");
    return "login";
}

1.5、使用 ModelMap 向 request 域对象中共享数据

@RequestMapping("toLogin")
public String toLogin(ModelMap modelMap){
    modelMap.addAttribute("welcome","hello tiger!");
    return "login";
}

1.6、使用 Servlet API 向 session 域中共享数据

@RequestMapping("toLogin")
public String toLogin(HttpSession session){
    session.setAttribute("welcome","hello tiger!");
    return "login";
}
<h1 th:text="${session.welcome}"></h1>

1.7、使用 Servlet API 向 application 域中共享数据

@RequestMapping("toLogin")
public String toLogin(HttpSession session){
    ServletContext application = session.getServletContext();
    application.setAttribute("welcome","hello tiger!");
    return "login";
}
<h1 th:text="${application.welcome}"></h1>

1.8、thymeleaf集合遍历

<tr th:each="e:${userList}">
<td th:text="${e.userName}"/>
<td th:text="${e.gender}"/>
</tr>

2、视图

在 Spring MVC 中,视图扮演着十分重要的角色,它主要负责整合 Web 资源、对模型数据进行渲染,并最终将 Model 中的数据以特定的形式展示给用户。

实现类说明
ThymeleafViewThymeleaf 视图。当项目中使用的视图技术为 Thymeleaf 时,就需要使用该视图类。
InternalResourceView转发视图,通过它可以实现请求的转发跳转。与此同时,它也是 JSP 视图。RedirectView重定向视图,通过它可以实现请求的重定向跳转。
FreeMarkerViewFreeMarker 视图.
MappingJackson2JsonViewJSON 视图。
AbstractPdfViewPDF 视图 。

视图划分为两大类:逻辑视图和非逻辑视图

2.1、逻辑视图

逻辑视图最大的特点就是,其控制器方法返回的 ModelAndView 中的 view 可以不是一个真正的视图对象,而是一个字符串类型的逻辑视图名

  • 直接在控制器方法中返回字符串类型的逻辑视图名
  • 在控制器方法中通过 ModelAndView 提供的 setViewName() 方法设置逻辑视图名

2.2、非逻辑视图

非逻辑视图,则与逻辑视图完全相反,其控制方法返回的是一个真正的视图对象

@RequestMapping("toLogin")
public ModelAndView toLogin(HttpSession session){
    ModelAndView modelAndView = new ModelAndView();
    UserInfo userInfo = new UserInfo();
    userInfo.setUserName("tiger");
    userInfo.setGender("man");
    modelAndView.addObject(userInfo);
    modelAndView.setView(new MappingJackson2JsonView());
    return modelAndView;
}

导入以下json解析关联的包
在这里插入图片描述

3、转发和重定向

3.1、转发

return "forward:/login"
modelAndView.setViewName("forward:/login");

3.2、重定向

return "redirect:/login"
modelAndView.setViewName("redirect:/login");

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

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

相关文章

RTC音视频是什么意思?即构RTC音视频有什么优势

RTC音视频是什么意思? RTC(Real time communication)&#xff0c;是实时音视频的一个简称&#xff0c;一种给行业提供高并发、低延时、高清流畅、安全可靠的全场景、全互动、全实时的音视频服务的终端服务。但更广义的RTC技术&#xff0c;不单单局限于音视频&#xff0c;包括I…

C++ 算法进阶系列之剖析树型动态规划算法思想

1. 前言 什么是树型动态规划&#xff1f; 概念中有 2 个子概念&#xff1a; 一个是动态规划概念。动态规划可以简单理解为通过对已经计算出来的子问题的状态值进行修改(基于子问题的状态值找到当前子问题的最优值)而得到当前子问题的状态值。 Tips&#xff1a; 本文侧重于动…

数智融合,生态链接丨 亚信科技“信伙伴”交流会(成都站)成功举办

日前&#xff0c;“数智融合&#xff0c;生态链接”亚信科技“信伙伴”交流会&#xff08;成都站&#xff09;在成都希顿酒店成功举办。本次会议由四川省信创产业联盟指导&#xff0c;亚信科技AntDB数据库事业部、四川省软件行业协会联合举办。 伴随我国信息技术应用创新不断向…

探究以太坊生态系统中的Consensys:产品技术细节与应用场景介绍

文章目录 前言一. Infura1. API简介&#xff08;1&#xff09;HTTP API&#xff08;2&#xff09;WebSocket API 2. Infura优势&#xff08;1&#xff09;稳定性&#xff08;2&#xff09;易用性&#xff08;3&#xff09;免费 二、Truffle1. Truffle框架&#xff08;1&#xf…

【大数据之Hadoop】十七、MapReduce之数据清洗ETL

ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程&#xff0c;目的是将分散、零乱、标准不统一的数据整合到一起&#xff0c;为决策提供分析依据。 ETL的设计分三部分&#xff1a;数据抽取、数据的清洗转换、数据的加载。 1 ETL体系结构 ETL主要是用来实现…

Python无框架分布式爬虫,爬取范例:拼多多商品详情数据,拼多多商品列表数据

拼多多是中国领先的社交电商平台之一&#xff0c;是一家以“团购折扣”为主要运营模式的电商平台。该平台上有海量的商品&#xff0c;对于商家和消费者来说都具有非常大的价值&#xff0c;因此&#xff0c;拼多多商品数据的采集技术非常重要。本文将介绍拼多多商品数据的采集技…

元宇宙资讯|消息称苹果 MR 头显发售要等到 2025 年

长期担任苹果分析师的吉恩・蒙斯特 (Gene Munster) 表示&#xff0c;尽管该公司可能永远不会使用“元宇宙”这个词&#xff0c;但苹果公司的混合现实耳机将是对元宇宙的认可。 深水资产管理公司 (Deepwater Asset Management) 的管理合伙人吉恩・蒙斯特 (Gene Munster) 在周三表…

【系统安全及应用2】

目录 一、开关机安全控制二、终端登录安全控制2.1、限制root只在安全终端登录2.2、如何限制虚拟终端2.3、禁止普通用户登录 三、系统弱口令检测3.1、Joth the Ripper&#xff0c;简称为 JR 四、网络端口扫描4.1、NMAP4.2、nmap的使用nmap的常用选项netstat常用选项 一、开关机安…

【C++初阶】C++入门(二):引用内联函数auto关键字范围for循环(C++11)指针空值nullptr

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C初阶 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C初阶】…

【pinia】新一代更好用的状态管理器Pinia

目录 一&#xff0c;Pinia状态管理库 1.Pinia介绍 2.Pinia的核心特性 3.核心概念 4.Pinia vs Vuex 5.Pinia & Vuex的不同 6.Pinia名字 二&#xff0c;Pinia基本使用 1.安装Pinia 2.配置main.ts文件 3.创建store/index.ts文件 4.使用数据 三&#xff0c;状态更新…

再获CSA大奖!顺丰科技腾讯安全iOA零信任联合方案获认可

随着千行百业数字化转型的加速&#xff0c;远程办公、业务协同、分支互联等需求涌现&#xff0c;传统的基于边界的网络安全防护理念难以有效抵挡层出不穷的威胁攻击&#xff0c;基于“无边界安全”理念的零信任技术模型逐渐成为企业关注的重点。 近日&#xff0c;第六届云安全…

千云物流 -车辆智能监控调度(一)-技术选型

技术选型 消息队列&#xff1a;rabbitMq 时序数据库&#xff1a; TDengine kv存储&#xff1a;redis 时序数据库 https://db-engines.com/en/ranking/timeseriesdbms 选择范围&#xff1a;Apache IoTDB&#xff0c;TDengine&#xff0c;OpenTSDB 对于存储车辆位置数据的时序数…

LabelImg安装记录

一 安装anaconda 安装conda主要是为了方便环境管理&#xff0c;避免软件版本冲突&#xff0c;安装简单&#xff0c;教程也很多&#xff0c;不做赘述 二 创建虚拟环境 在这里&#xff0c;我们创建一个专门用于标注数据的虚拟环境&#xff0c;取名为labelImg # 第一条命令c…

特斯拉 Tesla 热管理系统技术迭代分析(Model S/X/3/Y热管理系统介绍)

摘要&#xff1a; 特斯拉第三代热管理系统 为了更好地了解特斯拉的技术迭代以及集成度较高的热管理技术&#xff0c;今天我们针对特斯拉初代和第二代热管理系统做简单介绍。 特斯拉第一代热管理系统 系统架构原理图 第一代热管理系统应用在Model S和Model X上&#xff0c;共有…

4月14号软件资讯更新合集.....

PlayEdu v1.0-beta.2 版本发布&#xff0c;企业培训解决方案 PlayEdu 是基于 SpringBoot3 Java17 React18 开发的企业内部培训系统。它专注于提供私有化部署方案&#xff0c;包括视频&#xff0c;图片等资源的内网部署。目前主要支持有本地视频上传播放、学员邮箱登录、无限…

MIT6.824 Lecture18 Fork Consistency

Background 拜占庭问题&#xff08;Byzantine Generals Problem&#xff09;得名于一个古老的传说&#xff0c;讲述了拜占庭帝国在战争中的一个失败策略。在这个故事中&#xff0c;多名拜占庭将军要协调进攻或撤退的行动&#xff0c;但是其中一些将军可能会向其他帝国泄露假消…

在 Rocky linux 8.5 使用 Kubespray v2.21.0 离线部署 kubernetes v1.25.6 集群(草稿)

文章目录 前言创建7台虚拟机要求配置代理下载介质部署前准备安装部署工具配置 python venv配置部署容器 配置互信编写 inventory.ini创建 offline.yml部署 offline repokubespray v2.21.1 部署 kubernetes 失败报错1&#xff1a;Install packages requirements报错2&#xff1a…

各主流图床经历-尝试gitee,七牛云,smms,阿里云

目录 结论&#xff1a;都试过之后我还推荐用aliyun&#xff0c;反正不太贵 目的&#xff1a; 经历&#xff1a; typora用阿里云作图床的流程 结论&#xff1a;都试过之后我还推荐用aliyun&#xff0c;反正不太贵 目的&#xff1a; 想要让md文件中的本地相对链接转为网络图…

使用chatgpt一分钟帮你实现思维导图

前言 本篇基础篇课程&#xff0c;实操起来很简单&#xff0c;但却非常的实用。利用好这个功能&#xff0c;工作效率或能提升10倍&#xff01; 本篇内容的主题&#xff1a;利用ChatGPT&#xff0c;一分钟帮你实现详尽的思维导图。 创作内容大纲 格式转化 结合Xmind 创作内容…

2021地理设计组二等奖:城市三维空间格局对城市内涝的影响研究——以深圳市为例

作品简介 一、设计思想 内涝是指由于连续性降雨或强降雨导致城市地表径流超过地下管网排水能力从而引发的积水现象。内涝的发生会严重破坏城市基础服务设施&#xff08;如交通运输、通讯以及水、电、气的供应&#xff09;&#xff0c;甚至严重影响人民的财产和生命安全。为了降…