Spring MVC数据传递全攻略

Spring MVC数据传递

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

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

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

适用于获取 URL 或表单中的简单参数(如 ?name=value)。

后端代码示例:

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

前端调用方式:

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

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

java 复制代码
//接收到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 风格)。

后端代码示例:

java 复制代码
//命名不一致时要在注解内带名称值
    @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

java 复制代码
//命名一致时@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 对象。

后端代码示例:

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体)

javascript 复制代码
 {
 "eid":123,
  "ename":"xxy",
  "esex":"女"
  }

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

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

适用于服务端渲染(如 Thymeleaf、JSP)。

后端代码示例:

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

前端页面(Thymeleaf 示例):

html 复制代码
<p th:text="'Username: ' + ${username}"></p>

2. 使用HttpServletResponse直接写回数据

手动通过响应对象返回数据。

后端代码示例:

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

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

复制代码
               Java对象=====>JSON

后端代码示例:

java 复制代码
 	@RequestMapping("/show01")
    @ResponseBody
    public 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格式输出对象信息):

html 复制代码
[
  {
    "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 规则。
相关推荐
曹牧1 小时前
Spring:@RequestMapping 注解匹配顺序
java·后端·spring
云烟成雨TD1 小时前
Spring AI Alibaba 1.x 系列【44】多智能体 - 混合模式、监督者(SupervisorAgent)、自定义模式
java·人工智能·spring
MaxCode-11 小时前
Chapter 9:企业实战案例与架构沉淀
人工智能·spring·架构
TE-茶叶蛋2 小时前
Spring自动配置分析
java·后端·spring
JAVA面经实录9172 小时前
Spring Boot + Spring AI 完整实战手册
人工智能·spring boot·spring·ai编程
架构源启2 小时前
2026 进阶篇:Spring Boot响应式编程 + Spring AI 1.1.4 流式实战 + Vue前端完整实现(避坑指南)
java·前端·vue.js·人工智能·spring boot·spring·ai编程
南部余额3 小时前
Spring Cloud LoadBalancer 详解:客户端负载均衡的原理与实践
spring·spring cloud·负载均衡·微服务架构·轮询算法·loadbanlancer
梵得儿SHI4 小时前
SpringCloud 进阶拓展:分布式事务终极解决方案 Seata AT/TCC 模式全栈实战(含生产级避坑指南)
分布式·spring·spring cloud·seata·分布式事务·tcc·tc集群部署
user_admin_god21 小时前
SSE 流式响应 Chunk 被截断问题的排查与修复
java·人工智能·spring boot·spring·maven·mybatis
TE-茶叶蛋1 天前
Spring最核心扩展点:BeanPostProcessor
java·后端·spring