当前位置: 首页 > news >正文

Spring MVC学习之——Controller类中方法的返回值

Controller类中方法的返回值

1.返回ModelAndView

 	@RequestMapping("/hello")public ModelAndView hello(){//封装了页面和数据ModelAndView view = new ModelAndView();//对这个请求的页面添加属性(数据)view.addObject("hello","Hello,欢迎成功进入!");//设置内容显示的页面view.setViewName("success");return view;}

2.返回字符串

2.1逻辑视图名

  • 说明:controller方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。

  • 返回字符串

	@GetMapping("/hello")public String hello(Model model){model.addAttribute("hello","Hello,欢迎成功进入!");return "success";}

2.2Redirect重定向

说明:

  • Contrller方法返回结果重定向到一个url地址,如下商品修改提交后重定向到商品查询方法,参数无法带到商品查询方法中。
  • redirect方式相当于“response.sendRedirect()”,转发后浏览器的地址栏变为转发后的地址,因为转发即执行了一个新的request和response。
  • 由于新发起一个request原来的参数在转发时就不能传递到下一个url,如果要传参数可以/item/queryItem后边加参数,如下:/item/queryItem?...&…..
	@GetMapping("/account/findAccount")public String findAccount3(){return "redirect:/account/findAll";}@GetMapping("/account/findAll")public String findAll(Model model){model.addAttribute("hello","Hello,欢迎成功进入!");return "success";}

2.3Forward转发

说明:

  • controller方法执行后继续执行另一个controller方法,如下商品修改提交后转向到商品查询页面,修改商品的id参数可以带到商品查询方法中。
  • forward方式相当于request.getRequestDispatcher().forward(request,response),转发后浏览器地址栏还是原来的地址。转发并没有执行新的request和response,而是和转发前的请求共用一个request和response。所以转发前请求的参数在转发后仍然可以读取到。
@Controller
@RequestMapping("/account")
public class AccountController {@RequestMapping(value = "/findAccount3")public String findAccount3() {return "forward:/account/findAccount4";}@RequestMapping(value = "/findAccount4")public String findAccount4(Model model) {//添加数据model.addAttribute("msg", "这是springmvc的重定向");return "success";}
}

相关文章:

  • 网络安全(黑客)——2024自学
  • 第二百六十九回
  • 【vsan数据恢复】vsan逻辑架构出现故障的数据恢复案例
  • Springboot中时间格式化
  • 【linux 多线程并发】多线程的控制,挂起线程暂停运行,直到唤醒线程,取消线程运行,可以设置合适的取消点属性避免不安全点被中止
  • 趋势与观点 | 2024年全球最值得关注的十大网络安全态势
  • C++三剑客之std::variant(二):深入剖析
  • SpringBoot新手入门完整教程和项目示例
  • el-dialog嵌套使用,只显示遮罩层的问题
  • 【设计模式-3.3】结构型——享元模式
  • 面向企业的 ChatGPT 究极手册:第三章到第四章
  • WebGL中开发AR应用
  • mybatis----小细节
  • rust跟我学七:获取外网IP地址
  • 【话题】边缘计算的挑战和机遇
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JavaWeb(学习笔记二)
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 京东美团研发面经
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 项目管理碎碎念系列之一:干系人管理
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • mysql面试题分组并合并列
  • ​TypeScript都不会用,也敢说会前端?
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (52)只出现一次的数字III
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (算法)前K大的和
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • **python多态
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET Remoting学习笔记(三)信道
  • .net6使用Sejil可视化日志
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • /bin/rm: 参数列表过长"的解决办法
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • @RequestBody与@ModelAttribute
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [20150707]外部表与rowid.txt
  • [android] 天气app布局练习
  • [AR]Vumark(下一代条形码)
  • [C#]C# OpenVINO部署yolov8图像分类模型
  • [C#]winform部署yolov9的onnx模型
  • [C#]扩展方法