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 规则。
相关推荐
饕餮争锋14 小时前
Spring AOP原理简析
java·spring
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ15 小时前
日志打印配置:logback-spring.xml配置;info和error完全区分了,并且按时间拆分了
xml·spring·logback
王桑.19 小时前
Spring中IoC的底层原理
java·后端·spring
雨雨雨雨雨别下啦20 小时前
Spring AOP概念
java·后端·spring
on the way 12320 小时前
day04-Spring之Bean的生命周期
java·后端·spring
paopaokaka_luck1 天前
基于SpringBoot+Uniapp的自习室预约小程序(腾讯地图API、Echarts图形化分析、二维码识别)
vue.js·spring boot·后端·spring·echarts
小小8程序员1 天前
Spring Boot AOP 全面解析(原理 + 实战 + 场景)
java·spring boot·spring
何中应1 天前
【面试题-8】Spring/Spring MVC/Spring Boot/Spring Cloud
java·spring boot·后端·spring·mvc·面试题
没什么本事1 天前
Springboot CGLIB 代理对象问题
java·spring boot·spring
Javatutouhouduan1 天前
SpringBoot整合reids之JSON序列化文件夹操作
java·spring boot·spring·bootstrap·html·后端开发·java架构师