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 规则。
相关推荐
金銀銅鐵20 小时前
Spring 中的 initializeBean 方法的内部逻辑小总结
spring
麦兜*3 天前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud
麦兜*3 天前
MongoDB 在物联网(IoT)中的应用:海量时序数据处理方案
java·数据库·spring boot·物联网·mongodb·spring
青衫客363 天前
Spring异步编程- 浅谈 Reactor 核心操作符
java·spring·响应式编程
Cyan_RA93 天前
SpringMVC @RequestMapping的使用演示和细节 详解
java·开发语言·后端·spring·mvc·ssm·springmvc
wuxuanok4 天前
SpringBoot -原理篇
java·spring boot·spring
若鱼19194 天前
spring-kafka消费异常处理
spring·kafka
送秋三十五4 天前
spring源码分析————ListableBeanFactory
java·后端·spring
一又四分之一.4 天前
spring、springboot、springCloud
spring boot·spring·spring cloud
float_六七4 天前
Spring事务注解@Transactional核心机制详解
java·后端·spring