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

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.lryc.cn/news/603455.html

相关文章:

  • 黑客哲学之学习笔记系列(一)
  • bash变量名不能有连字符
  • mac 字体遍历demo
  • SpringBoot 的@Repository 等注解的底层实现原理
  • PostgreSQL锁机制详解:从并发控制到死锁检测
  • 分布式时序数据库的特点解析
  • 网络原理 - TCP/IP(一)
  • 字节序详解
  • TCP/IP 传输层详解
  • 【dropdown组件填坑指南】鼠标从触发元素到下拉框中间间隙时,下拉框消失,怎么解决?
  • 分布式链路追踪的实现原理
  • 查询mac 安装所有python 版本
  • 【Spring AI 1.0.0】Spring AI 1.0.0框架快速入门(5)——Tool Calling(工具调用)
  • 解决mac下git pull、push需要输入密码
  • 学习Scala语言的最佳实践有哪些?
  • 使用 Django REST Framework 构建强大的 API
  • CVE-2022-46169漏洞复现
  • Mysql Connect -- 详解
  • Ollama安装及使用Ollama部署大模型
  • 51c大模型~合集161
  • 【高级深度学习框架】lightning的使用记录
  • 番茄项目2:阶段性目标——用纯python完成这个项目
  • Vue3 状态管理新选择:Pinia 从入门到实战
  • 【JavaScript】手写 Object.prototype.toString()
  • 利用对称算法及非对称算法实现安全启动
  • C++异常捕获:为何推荐按引用(by reference)捕获?
  • 机器学习 线性回归算法及案例实现
  • Generative AI in Game Development
  • 信号上升沿时间与频谱分量的关系
  • 多线程--关于锁的一些知识考点