字符串

    /**
* 测试返回字符串
* @param model model
* @return 返回的字符串,通过视图解析器调整到jsp页面
*/
@RequestMapping("/testString")
public String testString(Model model){
System.out.println("testString方法执行了。。。");
User user = new User("zjw哈哈","123456",18);
model.addAttribute("user",user);
//相当于重定向
return "success";
}
  • 方法的功能和返回类型:

方法名称为 testString,其主要功能是处理一个 HTTP 请求并返回一个字符串。这个字符串通常用于指定要渲染的视图的名称。

  • 参数 - Model:

方法接受一个 Model 类型的参数。在 Spring MVC 中,Model 是一个接口,用于定义一个模型来存储控制器处理数据的结果。这些数据然后可以被传递给视图,用于渲染响应。

在这个方法中,通过调用 model.addAttribute("user", user),一个名为 "user" 的属性被添加到模型中,属性值是一个 User 对象实例。这意味着当视图被渲染时,这个 User 对象的数据将可用于显示。

  • 为什么可以直接写Model参数:

在 Spring MVC 中,当一个方法声明了 Model 作为参数,Spring 框架会自动为这个方法提供一个 Model 的实例。这是框架的一部分“依赖注入”功能。控制器方法不需要自己创建 Model 实例;框架会负责这个过程,并将实例传递给方法。

Model 参数的作用是允许开发者将数据添加到模型中,这些数据随后可以被视图访问和渲染。这是一种常见的模式,用于在 MVC(Model-View-Controller)架构中在控制器和视图之间传递数据。

转发和重定向

    @RequestMapping("/testVoid")
public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("testVoid方法执行了。。。");
//1、请求转发 不会再调用视图解析器,需要写完整的资源路径
// request.getRequestDispatcher("/pages/success.jsp").forward(request,response); //2、重定向
// response.sendRedirect(request.getContextPath()+"/index.jsp");
// response.sendRedirect(request.getContextPath()+"/user/testVoid2"); //3、直接打印
//解决中文乱码
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter writer = response.getWriter();
writer.print("hello,<br>");
writer.print("<a href='#'>zzzzz</a>。");
}
    /**
* 使用关键字的方式进行转发或者重定向,不会用到视图解析器
* @return
*/
@RequestMapping("/testForwardOrRedirect")
public String testForwardOrRedirect(){
System.out.println("testForwardOrRedirect方法执行了。。。"); //请求转发 这个也会自动识别项目名
// return "forward:/pages/success.jsp"; //重定向 不用加项目名称
// return "redirect:/index.jsp";
return "redirect:/user/testString";
}

ModelAndView

    @RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){ //创建ModelAndView
ModelAndView mv = new ModelAndView();
System.out.println("testModelAndView方法执行了。。。");
//模拟从数据库中查询出User对象
User user = new User();
user.setUsername("朱俊伟");
user.setPassword("123");
user.setAge(18);
//把user对象存储到mv对象中,也会把user对象存入到request对象中
mv.addObject("user",user);
//跳转到哪个页面
mv.setViewName("success");
return mv;
}
  • 方法的功能:

方法名称为 testModelAndView,其功能是创建一个 ModelAndView 对象,向其中添加数据,然后返回这个对象。

这个方法首先创建一个新的 ModelAndView 实例。然后,它模拟从数据库中查询出一个 User 对象,并将这个对象添加到 ModelAndView 实例中。

最后,方法通过 setViewName 方法设置视图名称为 "success",这指示视图解析器要渲染的视图(例如 success.jsp)。

  • ModelAndView 对象的作用:

ModelAndView 是一个便捷的方式,用于在单个返回值中同时处理模型数据和视图信息。

addObject 方法用于向 ModelAndView 对象添加属性。在这个例子中,它添加了一个名为 "user" 的属性,其值为一个 User 对象实例。这意味着当视图被渲染时,这个 User 对象的数据将可用于显示。

setViewName 方法设置了要渲染的视图的名称。在这种情况下,方法返回后,Spring MVC 的视图解析器会寻找一个名为 success 的视图来渲染响应。

  • 与 Model 的对比:

在其他 Spring MVC 控制器方法中,你可能看到使用 Model 或 ModelMap 类型的参数来传递模型数据,然后方法返回一个视图名称的字符串。这种方式将模型数据和视图分开处理。

ModelAndView 提供了一种更为紧密集成的方式,允许在单个对象中同时处理模型和视图,这在某些情况下可以使代码更清晰、更易于管理。

SpringMVC返回值的更多相关文章

  1. 05 SpringMVC:02.参数绑定及自定义类型转换&&04.SpringMVC返回值类型及响应数据类型&&05.文件上传&&06.异常处理及拦截器

    springMVC共三天 第一天: 01.SpringMVC概述及入门案例 02.参数绑定及自定义类型转换 03.SpringMVC常用注解 第二天: 04.SpringMVC返回值类型及响应数据类型 ...

  2. springmvc返回值、数据写到页面、表单提交、ajax、重定向

    实验是在前一篇文章的项目上做的: 数据写到页面 后台往前台传数据 TestController添加 /** * 方法的返回值采用ModelAndView, new ModelAndView(" ...

  3. springmvc返回值为void

    /** * 移动端退出登录 * @param req */ @RequestMapping(value="/mobileUserLogout") @ResponseBody pub ...

  4. SpringMVC返回值类型及响应数据类型

    1.SpringMVC 和 Struts2 的优略分析 共同点: 它们都是表现层框架,都是基于 MVC 模型编写的. 它们的底层都离不开原始 ServletAPI. 它们处理请求的机制都是一个核心控制 ...

  5. SpringMVC——返回值类型

    1.void作为返回值类型 如果你的方法写成了Void就跟原来Servlet含义是差不多的 @RequestMapping("/index*") public void first ...

  6. 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_8 响应json数据之响应json格式数据

    springMvc的框架已经帮我们做好了.发过来的数据转换为javaBean对象 发过来的键值的形式,如果属性和javaBean对应的话,可以直接封装到对象中. key做额外的转换的时候,需要另外的j ...

  7. SpringMVC返回值响应

    1.响应数据和结果视图 1.1 搭建环境 New Module -> Module SDK 1.8 -> Create from archetype -> maven-archety ...

  8. 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_5 响应之使用forward和redirect进行页面跳转

    这个方式用的比较少. forward 转发或者重定向 返回forward关键字就表现现在想使用的就是请求转发 redirect

  9. 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_4 响应之返回值是ModelAndView类型

    ModelAndView是SpringMvc提供的一个对象 ModelAndView底层源码用也是ModelMap.ModelMap实现过Model的接口 ModelAndView可以直接new出来. ...

  10. 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_3 响应之返回值是void类型

    定义先的标签 返回void 测试默认的跳转 虽然是404但是方法执行了. 默认请求了 testVoid.jsp这个页面.请求路径叫什么 就访问哪个jsp页面. 使用request请求转发 抛出的异常 ...

随机推荐

  1. Normalizing flow 流模型 | CS236深度生成模型Lec8学习笔记

    主要参考资料:Stanford University CS236: Deep Generative Models Lec8. 这篇blog基本上是CS236 Lec8的刷课总结/刷课笔记. VAE 这 ...

  2. Pm2安装以及守护傻妞机器人进程教程

    本教程以centos7为例子,其他系统可自行替换 一.安装 1.安装nodejs yum install nodejs 2.安装pm2 cd /root && npm install ...

  3. Flink学习(十一) Sink到Elasticsearch

    导入依赖 <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-conn ...

  4. excel 数字转中文大写金额

    1.在单元格中输入公式: =SUBSTITUTE(SUBSTITUTE(IF(-RMB(A1,2),TEXT(A1,";负")&TEXT(INT(ABS(A1)+0.5%) ...

  5. ChatBI≠NL2SQL:关于问数,聊聊我踩过的坑和一点感悟

    "如果说数据是新时代的石油,智能问数就是能让普通人也能操作的智能钻井平台." 这里是**AI粉嫩特攻队!** ,这段时间真的太忙了,不过放心,关于从零打造AI工具的coze实操下篇 ...

  6. 【P2】MARS使用/MIPS汇编

    课上 T1 在n位数中删除N个数使剩下的(n-N)位数最大 写得似乎过于谨慎而慢了,没出现寄存器打错的问题,一遍过了 T2 拆分数字 将输入整数N拆分为几个数相加的形式,按拆分项数降序排列,每项按数字 ...

  7. Qt源码阅读(二) moveToThread

    Qt 源码分析之moveToThread 这一次,我们来看Qt中关于将一个QObject对象移动至一个线程的函数moveToThread 目录 Qt 源码分析之moveToThread Qt使用线程的 ...

  8. vue2中如何使用组合式API和vueuse工具包

    vue2中如何使用组合式API和vueuse工具包 1. 安装 @vue/composition-api 依赖包 yarn add @vue/composition-api # 或 npm insta ...

  9. docker报错 ERROR: Service 'workspace' failed to build: ERROR: Service 'php-fpm' failed to build:

    在 Windows 系统中使用 Laradock 搭建基于 Docker 的 PHP 开发环境 执行命令 docker-compose up nginx mysql redis 执行过程中出现错误 报 ...

  10. CDH6.3.2下安装部署Qualitis数据质量分析的计算服务Linkis1.3.2

    快速搭建Qualitis手册 一.基础软件安装 Gradle (4.6) MySQL (5.5+) JDK (1.8.0_141) Linkis(1.0.0+), 必装Spark引擎.如何安装Link ...