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 规则。
相关推荐
阿维的博客日记2 小时前
Nacos 为什么能让配置动态生效?(涉及 @RefreshScope 注解)
java·spring
tongluowan0077 小时前
@Autowired 和 @Resource 有什么区别?
java·spring·bean
海兰10 小时前
【第21篇-续】graph-Stream-Node改造为适配openAI模型示例
java·人工智能·spring boot·spring·spring ai
夕除11 小时前
spring boot 9
java·mysql·spring
happymaker062612 小时前
Spring学习日记——DAY03(yml文件)
java·spring boot·spring
霸道流氓气质12 小时前
Spring AI 结构化输出 Agent 实战:让大模型返回精准 JSON
人工智能·spring·json
段ヤシ.12 小时前
回顾Java知识点,面试题汇总Day10(持续更新)
java·开发语言·spring
小江的记录本14 小时前
【Java基础】集合框架: ArrayList vs LinkedList 核心区别、扩容机制(附《思维导图》+《面试高频考点清单》)
java·数据库·python·mysql·spring·面试·maven
夕除14 小时前
spring boot 10
java·python·spring
Mahir0814 小时前
Spring 核心原理:IoC/DI 与 Bean 生命周期全景解析
java·后端·spring·面试·bean生命周期·控制反转ioc·依赖注入di