处理器方法的返回值

返回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;示…

JavaSE(上)-Day7

JavaSE&#xff08;上&#xff09;-Day7 类和对象封装privatethis构造方法标准JavaBean对象的内存图执行Test类main方法生成一个User对象的内存过程 基本数据类型和引用数据类型的区别this的内存原理成员变量和局部变量区别 类和对象 类是设计图纸&#xff0c;对象是真正的实例…

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

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;直到无法继续删除。 在完成…

LeetCode_30_困难_串联所有单词的子串

文章目录 1. 题目2. 思路及代码实现详解&#xff08;Python&#xff09;2.1 滑动窗口 1. 题目 给定一个字符串 s s s 和一个字符串数组 w o r d s words words。 w o r d s words words 中所有字符串 长度相同。 s s s 中的 串联子串 是指一个包含 w o r d s words words …

Leetcode 3081. Replace Question Marks in String to Minimize Its Value

Leetcode 3081. Replace Question Marks in String to Minimize Its Value 1. 解题思路2. 代码实现 题目链接&#xff1a;3081. Replace Question Marks in String to Minimize Its Value 1. 解题思路 这一题其实感觉还是有点难的&#xff0c;主要一开始确实走了弯路&#x…

Python 异步编程(Async/Await)

Python 中的异步编程是一种编程模式&#xff0c;它允许程序在等待 I/O 操作&#xff08;如网络请求、文件读写等&#xff09;的同时继续执行其他任务&#xff0c;而不会阻塞整个程序。这种方式可以提高程序的效率和响应性。 在 Python 中&#xff0c;异步编程的核心概念是使用…

数据结构:9、二叉树

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

在java中当main方法执行完,堆内存会自己释放内存吗?(附解释)

在Java中&#xff0c;堆内存中的对象由Java虚拟机&#xff08;JVM&#xff09;的垃圾回收器自动进行内存管理和释放。当一个对象不再被引用时&#xff0c;垃圾回收器会在适当的时机自动回收该对象所占用的内存空间。这意味着在main方法执行完毕后&#xff0c;堆内存中的对象会被…

redis常用五大数据类型

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

Tomcat的Host Manager页面403的原因和解决办法

目录 背景 原因: 解决方案 背景 一直报错 403 Access Denied You are not authorized to view this page.By default the Host Manager is only accessible from a browser running on the same machine as Tomcat. If you wish to modify this restriction, youll need to…

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;必备画图技能之…

自然语言处理与图像描述

自然语言处理&#xff08;NLP&#xff09;与图像描述是两个相互关联且互补的领域。自然语言处理主要涉及计算机和人类&#xff08;自然&#xff09;语言之间的相互作用&#xff0c;包括文本分析、理解、生成和翻译等。而图像描述则是指使用自然语言来表达图像内容的过程&#x…

剑指offer面试题40 数组中只出现一次的数字

考察点 异或运算&#xff0c;与运算知识点 题目 分析 本题目要求数组中只出现一次的俩个数字&#xff0c;并且要求O(1)时间复杂度和空间复杂度。试想一下如果只有一个数字出现一次&#xff0c;那么针对全部元素做异或运算就可以了&#xff0c;因为相同元素异或为0。现在有俩…

2 使用GPU理解并行计算

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

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

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