当前位置: 首页 > 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.dtcms.com/a/304395.html

相关文章:

  • 架构实战——互联网架构模板(“网络层”技术)
  • WINCC选项组配置
  • Spring Boot 请求限流实战:基于 IP 的高效防刷策略
  • Postgresql 查询使用正则
  • SQL158 每类视频近一个月的转发量/率
  • Java 大视界 -- Java 大数据在智能教育学习社区知识图谱构建与知识传播分析中的应用(370)
  • DeepCompare文件深度对比软件的差异内容提取与保存功能深度解析
  • Go语言新手村:轻松理解变量、常量和枚举用法
  • 论文阅读--射频电源在半导体领域的应用
  • 《从HTTP到IP证书:网络身份验证的下一站革命》
  • 如何使用 Git 钩子 hooks 自动化任务?
  • 【MySQL】数据库的简单介绍
  • [2025CVPR-图象分类]ProAPO:视觉分类的渐进式自动提示优化
  • java基础面试题(6)--Object
  • Jenkins 节点连接故障定位及解决方案总结 - PKIX path validation failed
  • 如何创建一个 Solana 钱包?
  • 在 Ubuntu 下测试单目与双目相机
  • ubuntu 25.04 自带JS引擎gjs运行GTK with JavaScript 应用
  • B+树高效实现与优化技巧
  • 微服务 01
  • FastAPI后台任务:异步魔法还是同步噩梦?
  • Spring Boot with RabbitMQ:四大核心模式指南
  • 代码随想录算法训练营第三十天|0/1背包问题
  • 如何保证DoIP的网络安全?
  • rtp、rtcp、rtsp、rtmp协议详解
  • 嵌入式学习日志(十一)
  • 【windows系统服务端ssh免密登录配置坑】
  • 低空经济应用-无人机拉格朗日粒子追踪技术
  • 阿里云上进行k8s集群的配置
  • 电脑没有声音了怎么恢复 快速解决音频故障