处理器方法的返回值

返回ModelAndView:

        若处理器方法处理完后,需要跳转到其它资源,且又要在跳转的资源间传递数据,此时处理器方法返回ModelAndView 比较好。当然,若要返回 ModelAndView,则处理器方法中 需要定义ModelAndView对象。

        在使用时,若该处理器方法只是进行跳转而不传递数据,或只是传递数据而并不向任何资源跳转(如对页面的Ajax 异步响应),此时若返回ModelAndView,则将总是有一部分多 余:要么Model多余,要么View多余。即此时返回ModelAndView将不合适。

返回String:

        如果你只是进行视图的跳转:从a页面跳转到b页面,用String是最方便的。这个返回值String既可以是逻辑名称,也可以是一个完整的视图路径;当String代表的是完整路径的时候,不能和视图解析器一同工作,因为视图解析器会进行字符串的拼接: 前缀+视图的逻辑名称+后缀

        总之:如果你要用完整路径就不能有视图解析器,如果你要用逻辑名称,就必须要用视图解析器,否则冲突

案例1:

index.jsp:

<p>如果你只是进行视图的跳转:从a页面跳转到b页面,用String</p>
<form action = "returnString.do">姓名:<input type ="text" name = "name">年龄: <input type = "text" name = "age"><input type = "submit" value = "提交参数"/>
</form>
@Controller
public class MyController3 {@RequestMapping("/returnString.do")public String doReturnView(String name ,Integer age){//因为项目中配置了视图解析器,所以你只能写视图的逻辑名称return "show3";}
}

show3.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><h3>myName数据:${myName}</h3><h3>myAge数据:${myAge}</h3>
</head>
<body></body>
</html>

结果: 

案例2: 

 如果处理器方法的返回值为String,可以自己手工的添加数据到Request作用域:

index.jsp:

<p>如果你只是进行视图的跳转:从a页面跳转到b页面,用String returnString2.do</p>
<form action = "returnString2.do">姓名:<input type ="text" name = "name">年龄: <input type = "text" name = "age"><input type = "submit" value = "提交参数"/>
</form><p>如果你只是进行视图的跳转:从a页面跳转到b页面,用String returnString3.do</p>
<form action = "returnString3.do">姓名:<input type ="text" name = "name">年龄: <input type = "text" name = "age"><input type = "submit" value = "提交参数"/>
</form>

        以下两个处理器方法的逻辑是等价的:

  @RequestMapping("/returnString2.do") //框架会自动创建request对象public String doReturnView2(HttpServletRequest request,String name , Integer age){//手工添加数据到request作用域:request.setAttribute("myName",name);request.setAttribute("myAge",age);//因为项目中配置了视图解析器,所以你只能写视图的逻辑名称return "show3";}@RequestMapping("/returnString3.do")public String doReturnView3(HttpServletRequest request){String myName = request.getParameter("name");String myAge = request.getParameter("age");//手工添加数据到request作用域:request.setAttribute("myName",myName);request.setAttribute("myAge",myAge);//因为项目中配置了视图解析器,所以你只能写视图的逻辑名称return "show3";}

show3.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><h3>myName数据:${myName}</h3><h3>myAge数据:${myAge}</h3>
</head>
<body>
</body>
</html>


 

案例3: 

        如果你返回完整路径,且没有删除视图解析器:

        因为你的项目中的视图解析器没删,它会做一个字符串的拼接:前缀+视图名称+后缀:

 

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

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

相关文章

Python 深度学习第二版(GPT 重译)(四)

九、高级计算机视觉深度学习 本章涵盖 计算机视觉的不同分支&#xff1a;图像分类、图像分割、目标检测 现代卷积神经网络架构模式&#xff1a;残差连接、批量归一化、深度可分离卷积 可视化和解释卷积神经网络学习的技术 上一章通过简单模型&#xff08;一堆Conv2D和MaxP…

什么是高防CDN?

高防CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;在网络安全中的作用非常重要。它通过一种特别的方式来保护网站和网络应用程序免受大规模DDoS攻击。以下是它的一些主要优势&#xff1a; 01 分布式防护 高防CDN通过在全球各地设立大量的节点…

深入解析Kafka中的动态更新模式

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 深入解析Kafka中的动态更新模式 前言动态更新模式的基础概念动态更新模式的概念&#xff1a;解决的问题和引入的原因&#xff1a; 原理解析与工作流程动态更新模式的工作原理和工作流程&#xff1a;示…

【联邦学习贡献评估——联邦学习优化】

1. 模型复用 贡献评估往往需要计算不同参与方组合的数据价值, 然而模型相关的价值度量指标, 比如测试准确率, 需要基于数据重新训练并评测模型, 这导致了高昂的数据价值度量代价. 为了避免重复训练联邦模型的代价, 考虑复用全体参与方组合下训练联邦模型时各参与方的梯度更新,…

【NTN 卫星通信】 车辆物联网设备通过NTN和TN切换的应用场景

1 场景描述 对于有两个3GPP无线接入网服务的大面积农田和农场&#xff0c;物联网设备可以通过NTN和TN接入网同时受益于5G系统的双转向数据连接能力。   在这个用例中&#xff0c;我们有一个广域的农业自动化应用系统来控制农业车辆&#xff0c;例如&#xff0c;一个装有数百个…

大模型提示学习样本量有玄机,自适应调节方法好

引言&#xff1a;探索文本分类中的个性化示例数量 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;预测模型已经从零开始训练演变为使用标记数据对预训练模型进行微调。这种微调的极端形式涉及到上下文学习&#xff08;In-Context Learning, ICL&#xff09;&…

leetcode代码记录(删除字符串中的所有相邻重复项

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 给出由小写字母组成的字符串 S&#xff0c;重复项删除操作会选择两个相邻且相同的字母&#xff0c;并删除它们。 在 S 上反复执行重复项删除操作&#xff0c;直到无法继续删除。 在完成…

数据结构:9、二叉树

在上堆中已经介绍了什么是二叉树&#xff0c;所以这里直接写二叉树实现。 1、二叉树的构建 二叉树的构建第一步肯定是初始化&#xff0c;也就是构建这棵树&#xff0c;这里是利用前序遍历构建的&#xff0c;因为这里是利用链表形式创建的二叉树&#xff0c;所以这里就是和之前…

redis常用五大数据类型

目录 Key 字符串String 常用命令 列表List 常用命令 集合Set 常用命令 Hash哈希 键值对集合 有序集合Zset Redis新数据类型 Key set key value...添加keykeys *查看当前库中所有的keyexist key该key是否存在type keykey的类型del key删除keyunlink key根据value选择非阻塞…

C++ UML类图

参考文章&#xff1a; &#xff08;1&#xff09;C UML类图详解 &#xff08;2&#xff09;C基础——用C实例理解UML类图 &#xff08;3&#xff09;C设计模式——UML类图 &#xff08;4&#xff09;[UML] 类图介绍 —— 程序员&#xff08;灵魂画手&#xff09;必备画图技能之…

2 使用GPU理解并行计算

2.1 简介 本章旨在对并行程序设计的基本概念及其与GPU技术的联系做一个宽泛的介绍。本章主要面向具有串行程序设计经验&#xff0c;但对并行处理概念缺乏了解的读者。我们将用GPU的基本知识来讲解并行程序设计的基本概念。 2.2 传统的串行代码 绝大多数程序员是在串行程序占据…

手撕算法-二叉树的最大深度

描述&#xff1a;分析&#xff1a;求以节点root为根节点的树的最大深度。可以进行拆分&#xff1a;root为根节点的树的最大深度 max(左子树的最大深度, 右子树最大深度&#xff09;1 截止条件是节点为空&#xff0c;深度为0&#xff1b; 代码&#xff1a; public int maxDep…

HarmonyOS如何创建及调用三方库

介绍 本篇主要向开发者展示了在Stage模型中&#xff0c;如何调用已经上架到三方库中心的社区库和项目内创建的本地库。效果图如下&#xff1a; 相关概念 Navigation&#xff1a;一般作为Page页面的根容器&#xff0c;通过属性设置来展示页面的标题、工具栏、菜单。Tabs&#…

Java + sa-token统一身份认证开发笔记

官网地址&#xff1a;Sa-Token 统一认证服务端 直接用的官网的demo&#xff0c;稍加改动&#xff0c;因为要前后端分离&#xff0c;加了一个H5Controller&#xff0c;官网也有详细介绍&#xff0c;这一部分不难&#xff0c;照着做就行了 配置文件&#xff1a; # Sa-Token 配…

vo、po、dto、bo、pojo、entity

VO&#xff1a;Value Object&#xff0c;值对象。 通常用于业务层之间的数据传递&#xff0c;由new创建&#xff0c;由GC回收&#xff1b;例如&#xff1a;将商品信息和用户信息重新用一个对象封装起来。和PO一样也是仅仅包含数据而已&#xff0c;但应是抽象出的业务对象&…

全网良心开源知识库:AI学习者的宝藏之地

导语&#xff1a;在这个信息爆炸的时代&#xff0c;想要入门AI&#xff0c;找到最一流的学习资源并非易事。然而&#xff0c;有一个地方&#xff0c;能让你免费学习AI&#xff0c;获取最顶尖的知识&#xff0c;还能加入最优秀的AI学习圈。今天&#xff0c;我要向大家推荐的&…

Jumpserver 堡垒机用户启用双因子登录

前言&#xff1a; 堡垒机双因子登录 堡垒机往往是内部权限的集合体&#xff0c;拿到了堡垒机的用户账号密码&#xff0c;很容易就顺藤摸瓜攻破各种应用系统&#xff0c;除了常规的用户名复杂密码的要求外&#xff0c;我们常常都要求采用双因子的登录方式。双因子最常见的就是账…

【Qt学习笔记】(六)界面优化

界面优化 1 QSS1.1 背景介绍1.2 基本语法1.3 QSS设置方式1.3.1 指定控件样式设计1.3.2 全局样式设置1.3.3 使用 Qt Designer 编辑样式 1.4 选择器1.4.1选择器概况1.4.2 子控件选择器&#xff08;Sub-Controls&#xff09;1.4.3伪类选择器(Pseudo-States) 1.5 样式属性1.5.1 盒模…

MyBatis:编织数据之美的艺术

在数据库交互的舞台上&#xff0c;MyBatis就如同一位出色的编码艺术家&#xff0c;通过其独特的姿态和技巧&#xff0c;将数据库操作变得既优雅又高效。在这篇博客中&#xff0c;我们将深入研究MyBatis的使用详解&#xff0c;揭开其中的奥秘&#xff0c;感受数据之美的艺术之旅…

SpringCloud-Nacos配置管理

在nacos中添加配置文件 如何在nacos中管理配置呢&#xff1f; 然后在弹出的表单中&#xff0c;填写配置信息&#xff1a;如&#xff1a;userservice-dev.yaml 注意&#xff1a;项目的核心配置&#xff0c;需要热更新的配置才有放到nacos管理的必要。基本不会变更的一些配置…