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 规则。
相关推荐
小沛928 分钟前
Spring AI Alibaba JManus:前后端异步消息回显机制深度解析
人工智能·spring·jmanus
paopaokaka_luck7 小时前
基于Spring Boot+Vue的吉他社团系统设计和实现(协同过滤算法)
java·vue.js·spring boot·后端·spring
曹朋羽8 小时前
spring cloud sentinel 动态规则配置
spring·spring cloud·sentinel
做一位快乐的码农12 小时前
基于Spring Boot和Vue电脑维修平台整合系统的设计与实现
java·struts·spring·tomcat·电脑·maven
王柏龙12 小时前
ASP.NET Core MVC中taghelper的ModelExpression详解
后端·asp.net·mvc
一枚小小程序员哈17 小时前
基于springboot的零食商城的设计与实现/零食销售系统的设计与实现
java·spring boot·spring·tomcat·maven
法欧特斯卡雷特1 天前
【译】Spring I&O 社区专家聊 Jimmer ORM
后端·spring·面试
Code季风1 天前
Spring 异常处理最佳实践:从基础配置到生产级应用
java·spring boot·spring
Code季风1 天前
Spring IoC 容器性能提升指南:启动速度与运行效率优化策略
java·spring·性能优化