处理器方法的返回值

news/2024/12/22 20:31:06/
返回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.ppmy.cn/news/1390013.html

相关文章

Leetcode面试经典150题

数组字符串 合并两个有序数组 思路 类似于归并排序&#xff0c;对两个有序数组进行合并即可&#xff0c;但是空间复杂度是O(nm); 代码 class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int[] ans new int[n m];int i 0, j 0;int cnt 0;…

微信小程序调试、断点调试

1、wxml 查看对应的页面组件 2、console面板可以用来打印信息 3、sources 用来断点调试 4、network面板用来调试接口 5、storage面板 可以查看每个key对应的value内容&#xff0c;这些数据在用户使用小程序时被持久化保存在本地。

206.翻转链表

给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#xff1a; 输入&#xff1a;head [] 输…

数据结构与算法4-冒泡排序

文章目录 1. 认识冒泡排序2. 图示2.1 图示12.2 图示2 3. 代码 1. 认识冒泡排序 双层for循环&#xff0c;每次选出最大的数“浮”到数组的最后面&#xff1b;时间复杂度O( n 2 n^2 n2)&#xff0c;空间复杂度O(1);重复地遍历待排序的数列&#xff0c;一次比较两个元素&#xff…

JVM学习-类加载

目录 1.类文件结构 2.类加载器 3.类加载的三个阶段 3.1加载 3.2链接 3.2.1验证 3.2.2准备阶段 3.2.3解析阶段 3.3初始化 4.拓展&#xff1a;反射 4.1获取类对象 4.2创建实例 4.3获取方法 4.4方法调用 1.类文件结构 2.类加载器 类加载器用来将类文件的二进制字节码加载到JV…

MySQL 管理用户授权 DCL

管理用户 查询用户 use mysql select * from user;创建用户 //通配符: 主机名如果是 % 表示可以在任意主机登录 create user 用户名主机名 identified by 密码;修改用户 //方法1: update user set password password(新密码) where user 用户名; //方法2: set password f…

利用SpringBoot Actuator 来构造/health /info 等监控接口

当我们用K8S 部署微服务时&#xff0c; 很多时候需要调用 service的/health 等状态接口&#xff0c; 已确定container的运行状态是否健康。 而Spring boot Actuator 就是用来快速构造这些状态接口的工具 引入依赖 <!-- actuator --><dependency><groupId>or…

Learning to summarize from human feedback

Abstract 人工参考总结以及 ROUGE 指标只是我们真实关心的目标(总结质量)的粗略代表。通过优化人工偏好来显著提升总结质量使用大量高质量的人类比较来训练一个模型来预测人类偏好的总结使用这个模型作为奖励函数对总结策略进行强化学习微调我们模型的效果在 TL;DR 数据集上显…