• SpringMVC学习篇(五)


    SpringMVC之json数据传递

    1.1 准备工作

    1.1.1 导入lombok依赖(方便写实体类)

     <dependency>
                <groupId>org.projectlombokgroupId>
                <artifactId>lombokartifactId>
                <version>1.18.24version>
     dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1.1.2 导入mvc json的依赖

    <dependency>
        <groupId>com.fasterxml.jackson.coregroupId>
        <artifactId>jackson-databindartifactId>
        <version>2.13.2.1version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1.1.3 创建实体类

    package com.entity;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @AllArgsConstructor
    @NoArgsConstructor
    @Data
    public class Users {
        /*实体的属性名必须与表单的name对应 找的是(注入)set方法*/
       private Integer id;
       private String yhm;
       private String pwd;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    1.2 后台返回json数据到前台

    1.2.1 示例代码

    package com.controller;
    
    import com.entity.Users;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    public class JsonController {
        @RequestMapping("json1")
        @ResponseBody
        public Users json1(){
            Users u=new Users(10,"张三","123466");
            return u;
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    1.2.2 代码分析

    @RequestMapping("json1")是给方法json1配置一个访问地址
    只要配置了@ResponseBody,无论你方法返回的是什么类型,都可以自动转换成json格式
    
    • 1
    • 2

    1.2.3 代码运行截图

    a 访问前

    在这里插入图片描述

    b 访问后

    在这里插入图片描述

    1.3 @RestController注解(@Controller+@ResponseBody)

    1.3.1 示例代码

    package com.controller;
    
    import com.entity.Users;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.ArrayList;
    import java.util.List;
    
    //@Controller
    @RestController
    public class JsonController {
        @RequestMapping("json1")
        public List<Users> json(){
            List<Users> arr=new ArrayList();
            arr.add(new Users(10,"张三","zs123466"));
            arr.add(new Users(20,"李四","ls123466"));
            arr.add(new Users(30,"王五","ww123466"));
            return arr;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    1.3.2 代码分析

    @RestController和@Controller不能同时存在
    @RestController是含有@Controller和@ResponseBody两者的结合体
    通常是用于某一类中,表示该类中的全部方法的返回值都会自动转json格式
    在前后端分离的项目中用的比较多
    
    • 1
    • 2
    • 3
    • 4

    1.3.3 代码运行截图

    a 访问前

    在这里插入图片描述

    b 访问后

    在这里插入图片描述

    1.4 带状态码的返回 ReponseEntity

    1.4.1 带200状态码并把数据带回

    a 示例代码
     @RequestMapping("json4")
        public ResponseEntity<Users> json4(){
            Users u=new Users(222,"qqq","54647");
            /*返回200状态码 并带上数据*/
            return ResponseEntity.ok(u);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    b 示例代码分析
    ok方法代表访问成功,传入的参数就代表你成功后需要展示出来的数据
    
    • 1
    c 示例代码运行截图

    在这里插入图片描述

    1.4.2 带指定状态码,不返回数据

    a 示例代码
     @RequestMapping("json4")
        public ResponseEntity<Users> json4(){
            Users u=new Users(222,"qqq","54647");
            return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    b 示例代码分析
    status方法里面可以添任意已经存在的方法状态码 
    build方法代表的是此次访问并不携带数据
    
    • 1
    • 2
    c 示例代码运行截图

    在这里插入图片描述

    1.4.3 带指定状态码,返回数据

    a 示例代码
      @RequestMapping("json4")
        public ResponseEntity<Users> json4(){
            Users u=new Users(222,"qqq","54647");
            return ResponseEntity.status(HttpStatus.NOT_FOUND).body(u);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    b 示例代码分析
    body方法可以把后台的一些数据返回给前台
    
    • 1
    c 示例代码运行截图

    在这里插入图片描述

    1.5 返回中文文本信息

    1.5.1 示例代码

     @RequestMapping(value = "json3",produces = "text/plain;charset=utf-8")
        public String json3(){
            return "我喜欢学习SSM框架内容";
        }
    
    • 1
    • 2
    • 3
    • 4

    1.5.2 代码分析

    produces = "text/plain;charset=utf-8"是为了解决前台显示时中文乱码的问题
    因为在类外面加上了@RestController注解,所以在该方法前不用加上@ResponseBody注解
    
    • 1
    • 2

    1.5.3 代码运行截图

    在这里插入图片描述

    1.6 前台传递json数据格式的数据到后台

    1.6.1 示例代码

      @RequestMapping("json5")
        public void json5(@RequestBody Users u){
            System.out.println("获取数据:"+u);
        }
    
    • 1
    • 2
    • 3
    • 4

    1.6.2 代码分析

    @RequestBody可以确保前台传过来的json数据能被成功注入到Users实体类中
    这里没有写@ResponseBody是因为类的外面书写了@RestController注解
    
    • 1
    • 2

    1.6.3 代码运行截图

    a 前台部分

    在这里插入图片描述

    b 后台运行结果截图

    在这里插入图片描述

  • 相关阅读:
    计算机毕业设计Java会议管理系统(源码+系统+mysql数据库+lw文档)
    C/C++语言100题练习计划 87——火柴棒等式(枚举实现)
    uartus使用vwf仿真simulation里没有opting选项选择不了使用自带仿真
    从Mpx资源构建优化看splitChunks代码分割
    中贝通信-603220 三季报分析(20231120)
    『手撕Vue-CLI』添加自定义指令
    【码银送书第八期】《Python数据挖掘:入门进阶与实用案例分析》
    全平台高速下载器Gopeed
    一个简单的CMake实例
    【配置】win10+vscode+opencv4+mingw+cmake
  • 原文地址:https://blog.csdn.net/SSS4362/article/details/127872824