Spring MVC数据传递全攻略

Spring MVC数据传递

  • 一、前端到后端的数据传递
    • 1. 使用 @RequestParam 传递简单参数
    • 2. 使用 @PathVariable传递路径参数
    • 3. 使用@RequestBody传递 JSON 数据
  • 二、后端到前端的数据传递
    • 1. 使用Model或 ModelAndView传递数据到前端
    • 2. 使用HttpServletResponse直接写回数据
    • 3.使用@ResponseBody将后端数据用JSON格式发送前端
  • 注意事项

一、前端到后端的数据传递

1. 使用 @RequestParam 传递简单参数

应用于处理页面标签名称和方法参数名称不一致,可以使用此注解实现对应关系

适用于获取 URL 或表单中的简单参数(如 ?name=value)。
后端代码示例:

 //将带来的数据msg作为参数传入方法,并在方法中使用@RequestMapping("/show1")public String show1(@RequestParam("msg") String msg1){System.out.println("=====接受到用户发送数据为:"+msg1+"=======");return "success";//跳转至成功页面}

前端调用方式:

  • URL 直接传递:/show1?msg=25
  • 表单提交时拼接参数。

@RequestParam的defaultValue 属性:设置默认值

//接收到uname的值则传递 未接收到值返回默认值“暂无用户”@RequestMapping("/show2")public String show2(@RequestParam(name = "uname",defaultValue = "暂无用户") String name){System.out.println("=====接受到用户发送数据为:"+name+"=======");return "success";//跳转至成功页面}

前端调用方式:

  • URL 直接传递:/show2?uname=xxy
  • 如果直接访问/show2 则返回 “暂无用户”

2. 使用 @PathVariable传递路径参数

用于绑定 url 中的占位符。
从 URL 路径中获取动态参数(RESTful 风格)。
后端代码示例:

//命名不一致时要在注解内带名称值@RequestMapping("/show3/{uname}/{pwd}")public String show3(@PathVariable("uname") String msg1, @PathVariable("pwd") String msg2){System.out.println("=====接受到用户发送数据为:"+msg1+"   "+msg2+"=======");return "success";//跳转至成功页面}

前端调用方式:

  • 直接访问:/show3/xxy/1234567

//命名一致时@PathVariable内不用带名称值@PostMapping("/show4/{uname}/{pwd}")public String show4(@PathVariable String uname, @PathVariable String pwd){System.out.println(uname);System.out.println(pwd);return "success";}

前端调用方式:

  • 直接访问:/show4/xxy/1234567

3. 使用@RequestBody传递 JSON 数据

               JSON=====>Java对象

接收前端传递的 JSON 格式数据,并自动转换为 Java 对象。
后端代码示例:

    //@RequestBody传入一个对象信息(在body中用json传递)//    {"eid":123,//    "ename":"xxy",//    "esex":"女"}@RequestMapping("/show5")public String show5(@RequestBody Emp emp){System.out.println("=====接受到用户发送数据为:"+emp+"=======");return "success";//跳转至成功页面}

前端调用方式(在body体中用json字符串传值):
要用除GET请求以外的请求方式(GET请求无body体)

 {"eid":123,"ename":"xxy","esex":"女"}

二、后端到前端的数据传递

1. 使用Model或 ModelAndView传递数据到前端

适用于服务端渲染(如 Thymeleaf、JSP)。
后端代码示例:

@GetMapping("/profile")
public String profile(Model model) {model.addAttribute("username", "John");return "profile"; // 返回视图名称
}

前端页面(Thymeleaf 示例):

<p th:text="'Username: ' + ${username}"></p>

2. 使用HttpServletResponse直接写回数据

手动通过响应对象返回数据。
后端代码示例:

@GetMapping("/message")
public void getMessage(HttpServletResponse response) throws IOException {response.getWriter().write("Hello from server");
}

3.使用@ResponseBody将后端数据用JSON格式发送前端

               Java对象=====>JSON

后端代码示例:

 	@RequestMapping("/show01")@ResponseBodypublic List<Emp> show01(){Emp emp1=new Emp(1,"XXY","女");Emp emp2=new Emp(2,"xhn","男");Emp emp3=new Emp(3,"xxx","女");List<Emp> list=new ArrayList<>();list.add(emp1);list.add(emp2);list.add(emp3);return list;}

前端显示(json格式输出对象信息):

[{"eid": 1,"ename": "XXY","esex": "女"},{"eid": 2,"ename": "xhn","esex": "男"},{"eid": 3,"ename": "xxx","esex": "女"}
]

注意事项

  • Content-Type 匹配@RequestBody 需前端设置 application/json,而 @RequestParam 默认支持 x-www-form-urlencoded
  • 参数校验:结合 @Valid 注解对传递的数据进行校验(如 Bean Validation)。
  • 跨域问题:若前后端分离开发,需配置 @CrossOrigin 或全局 CORS 规则。

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

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

相关文章

仓库管理系统-12-前端之头部区域Header基于嵌套路由访问个人中心

文章目录 1 个人中心 1.1 DateUtils.vue(子组件) 1.2 Home.vue(父组件) 1.3 router/index.js(嵌套路由) 1.4 index.vue(路由占位符) 2 Header.vue 2.1 页面布局 2.2 toUser方法 2.3 初始加载 2.4 Header.vue 头部区域Header中有一个个人中心下拉菜单,点击个人中心选项,通过嵌…

【智能协同云图库】第七期:基于AI调用阿里云百炼大模型,实现AI图片编辑功能

摘要&#xff1a;AI 高速发展赋能传统业务&#xff0c;图库网站亦有诸多 AI 应用空间。以 AI 扩图功؜能为例&#xff0c;让我们来学习如何在项目⁠中快速接入 AI 绘图大模型。‏用户可以选择一张已上传的图片&#xff0c;‌通过 AI 扩图得到新的图片&#xff0c;希望可以帮到大…

Notepad++插件安装

方式一&#xff1a;自动安装&#xff08;有些notepad并不好用&#xff0c;推荐方式二&#xff09;工具栏-》插件-》插件管理如下点击安装后会提示&#xff0c;后端安装&#xff0c;安装成功后自动启动&#xff0c;本人使用的v8.6.4的版本&#xff0c;插件基本都无法自动安装&am…

git pull和git fetch的区别

git pull和git fetch是git版本控制系统中的两个基本命令&#xff0c;它们都用于从远程仓库更新本地仓库的信息&#xff0c;但执行的具体操作不同。git fetch:git fetch下载远程仓库最新的内容到你的本地仓库&#xff0c;但它并不自动合并或修改你当前的工作。它取回了远程仓库的…

Item35:考虑virtual函数以外的其他选择

在C++中,虚函数是实现多态的传统方式,但并非唯一选择。过度依赖虚函数可能导致派生类与基类的强耦合,或难以在运行时灵活切换行为。《Effective C++》Item35指出:应根据场景选择更合适的替代方案,包括NVI模式、函数指针、策略模式等。本文解析这些方案的原理、适用场景及实…

Vue3 状态管理新选择:Pinia 从入门到实战

一、什么是pinia? 在 Vue3 生态中&#xff0c;状态管理一直是开发者关注的核心话题。随着 Vuex 的逐步淡出&#xff0c;Pinia 作为官方推荐的状态管理库&#xff0c;凭借其简洁的 API、强大的功能和对 Vue3 特性的完美适配&#xff0c;成为了新时代的不二之选。今天我们就来深…

Unity相机控制

相机的控制无非移动和旋转&#xff0c;每种操作各3个轴6个方向&#xff0c;一共12种方式。在某些需要快速验证的项目或Demo里常常需要丝滑的控制相机调试效果。相机控制虽然不是什么高深的技术&#xff0c;但是要写的好用还是很磨人的。 锁定Z轴的旋转 一个自由的相机可以绕 …

vue2 使用liveplayer加载视频

vue2 使用liveplayer加载视频 官网: https://www.liveqing.com/docs/manuals/LivePlayer.html支持WebRTC/MP4播放;支持m3u8/HLS播放;支持HTTP-FLV/WS-FLV/RTMP播放;支持直播和点播播放;支持播放器快照截图;支持点播多清晰度播放;支持全屏或比例显示;自动检测IE浏览器兼容播放;支…

JavaScript语法树简介:AST/CST/词法/语法分析/ESTree/生成工具

AST简介 在平时的开发中&#xff0c;经常会遇到对JavaScript代码进行检查或改动的工具&#xff0c;例如ESLint会检查代码中的语法错误&#xff1b;Prettier会修改代码的格式&#xff1b;打包工具会将不同文件中的代码打包在一起等等。这些工具都对JavaScript代码本身进行了解析…

Java函数式编程之【基本数据类型流】

一、基本数据类型与基本数据的包装类 在Java编程语言中&#xff0c;int、long和double等基本数据类型都各有它们的包装类型Integer、Long和Double。 基本数据类型是Java程序语言内置的数据类型&#xff0c;可直接使用。 而包装类型则归属于普通的Java类&#xff0c;是对基本数据…

.NET Core部署服务器

1、以.NET Core5.0为例&#xff0c;在官网下载 下载 .NET 5.0 (Linux、macOS 和 Windows) | .NET 根据自己需求选择x64还是x86&#xff0c;记住关键下载完成还需要下载 Hosting Bundel &#xff0c;否则不成功 2、部署https将ssl证书放在服务器上&#xff0c;双击导入&#…

YOLO---04YOLOv3

YOLOV3 论文地址&#xff1a;&#xff1a;【https://arxiv.org/pdf/1804.02767】 YOLOV3 论文中文翻译地址&#xff1a;&#xff1a;【YOLO3论文中文版_yolo v3论文 中文版-CSDN博客】 YOLOv3 在实时性和精确性在当时都是做的比较好的&#xff0c;并在工业界得到了广泛应用 …

Qt知识点3『自定义属性的样式表失败问题』

问题1&#xff1a;自定义类中的自定义属性&#xff0c;如何通过样式表来赋值除了QT自带的属性&#xff0c;我们自定义的类中如果有自定义的静态属性&#xff0c;也可以支持样式表&#xff0c;如下 &#xff1a; Q_PROPERTY(QColor myBorderColor READ getMyBorderColor WRITE s…

RDQS_c和RDQS_t的作用及区别

&#x1f501; LPDDR5 中的 RDQS_t 和 RDQS_c — 复用机制详解 &#x1f4cc; 基本角色 引脚名 读操作&#xff08;READ&#xff09;作用 写操作&#xff08;WRITE&#xff09;作用&#xff08;当启用Link ECC&#xff09; RDQS_t Read DQS True&#xff1a;与 RDQS_c…

测试分类:详解各类测试方式与方法

前言&#xff1a;为什么要将测试进行分类呢&#xff1f;软件测试是软件生命周期中的⼀个重要环节&#xff0c;具有较高的复杂性&#xff0c;对于软件测试&#xff0c;可以从不同的角度加以分类&#xff0c;使开发者在软件开发过程中的不同层次、不同阶段对测试工作进行更好的执…

新手docker安装踩坑记录

最近在学习docker&#xff0c;安装和使用折腾了好久&#xff0c;在这里记录一下。下载# 依赖安装 sudo apt update sudo apt install -y \ca-certificates \curl \gnupg \lsb-release# 使用清华镜像源&#xff08;Ubuntu 24.04 noble&#xff09; echo \"deb [arch$(dpkg …

TOGAF指南1

1.TOGAF标准简介 TOGAF&#xff08;The Open Group Architecture Framework&#xff09;就像是一个企业架构的“操作手册”。它帮助企业设计、搭建和维护自己的“系统地图”&#xff0c;确保不同部门、技术、业务目标能像齿轮一样协调运转。 它的核心是&#xff1a; 用迭代的方…

[Linux入门] Linux 防火墙技术入门:从 iptables 到 nftables

目录 一、防火墙基础&#xff1a;netfilter 与 iptables 的关系 1️⃣什么是 netfilter&#xff1f; 2️⃣什么是 iptables&#xff1f; 二、iptables 核心&#xff1a;五链四表与规则体系 1️⃣什么是 “链”&#xff08;Chain&#xff09;&#xff1f; 2️⃣ 什么是 “…

函数fdopendir的用法

以下是关于 fdopendir 函数的详细解析&#xff0c;结合其核心功能、参数说明及典型应用场景&#xff1a;&#x1f50d; ‌一、函数功能与原型‌‌核心作用‌将已打开的目录文件描述符&#xff08;fd&#xff09;转换为目录流指针&#xff08;DIR*&#xff09;&#xff0c;用于后…

[源力觉醒 创作者计划]_文心4.5开源测评:国产大模型的技术突破与多维度能力解析

声明&#xff1a;文章为本人真实测评博客&#xff0c;非广告&#xff0c;并没有推广该平台 &#xff0c;为用户体验文章 一起来轻松玩转文心大模型吧&#x1f449; 文心大模型免费下载地址 一、引言&#xff1a;文心4.5开源——开启多模态大模型新时代 2025年6月30日&#x…