当前位置: 首页 > news >正文

SpringMVC接收请求参数

(5)请求参数==》五种普通参数

  • 1.普通参数
    • 代码块

    @RequestMapping("/commonParam")
    @ResponseBody
    public String commonParam(String name,int age){System.out.println("普通参数传递 name ==> "+name);System.out.println("普通参数传递 age ==> "+age);return "{'module':'commonParam'}";
    }
    • GET请求==》中文不会乱码

    • POST==》中文会发生乱码

    • 在servlet配置类中配置过滤器,若过滤规则有多种以逗号分割

    @Override
    protected Filter[] getServletFilters() {CharacterEncodingFilter filter = new CharacterEncodingFilter();filter.setEncoding("UTF-8");return new Filter[]{filter};
    }
    • ※※※请求参数命名和后台参数命名必须一致,否则导致接受参数失败

    • 使用@RequestParam参数进行映射

  • 2.POJO参数==》当请求参数较多时使用pojo参数作为请求参数

    • 定义pojo类和对应的控制器

    public class User {private String name;private int age;setter、getter...
    }
    ​
    @RequestMapping("/pojoParam")
    @ResponseBody
    public String pojoParam(User user) {System.out.println("pojo参数传递 user ==> " + user);return "{'module':'pojoParam'}";
    }
    • 发送请求

    • 参数获取失败,这是由于pojo类未定义setter方法

    • ※※※请求参数名必须和pojo类属性名一一对应,否则接收失败

  • 3.嵌套pojo参数
    • pojo类+控制器

    public class User {private String name;private int age;private Address address;setter、getter...
    }
    public class Address {private String city;private String province;setter、getter...
    }
    @RequestMapping("/pojoContainPojoParam")
    @ResponseBody
    public String pojoContainPojoParam(User user) {System.out.println("嵌套pojo参数传递 user ==> " + user);return "{'module':'pojoParam'}";
    }
  • 4.数组类型参数
  • 5.集合参数
    • 控制器

    @RequestMapping("/listParam")
    @ResponseBody
    public String listParam(List<String> hobby) {System.out.println("集合类型参数传递 hobby ==> " + hobby);return "{'module':'listParam'}";
    }
    • 会发现会报错==》SpringMVC将List看做是一个POJO对象来处理,将其创建一个对象并准备把前端的数 据封装到对象中,但是List是一个接口无法创建对象,所以报错。

    • 同名请求参数可以使用@RequestParam注解映射到对应名称的集合对象中作为数据

(6)JSON数据类型请求参数

  • 1.JSON普通数组
    • 添加Jackson依赖

    <!--导入Jackson依赖-->
    <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.15.4</version>
    </dependency>
    • 在SpringMVCConfig配置类中使用@EnableWebMvc开启json数据自动转换,里面就包含了将JSON转换成对象的功能。

    @Configuration
    @ComponentScan({"requestParam.controller"})
    @EnableWebMvc
    public class SpringMVCConfig {...}
    • 编写控制器

    @RequestMapping("/jsonParam")
    @ResponseBody
    public String commonParam(@RequestParam User user) {System.out.println("json数据类型参数传递 user ==> " + user);return "{'module':'jsonParam'}";
    }
    • 发送请求

    • 请求参数接收失败==》由于现在不是直接传递的参数,而是通过请求的Body进行传递,故@RequestParam不能使用,应该使用@RequestBody

  • 2.JSON对象
    • 控制器

    @RequestMapping("/jsonObjectParam")
    @ResponseBody
    public String commonParam(@RequestBody User user) {System.out.println("json数据类型参数传递 user ==> " + user);return "{'module':'jsonObjectParam'}";
    }
    • 发送请求

  • 3.JSON对象数组+对象嵌套
    • 控制器

    @RequestMapping("/jsonObjectArrayAndContainJsonObjectParam")
    @ResponseBody
    public String jsonObjectArrayAndContainJsonObjectParam(@RequestBody List<User>                                                                          userList) {System.out.println("json对象数组数据+嵌套数组类型参数传递 userList ==> " + userList);return "{'module':'jsonObjectArrayAndContainJsonObjectParam'}";
    }
    • 发送请求

http://www.lryc.cn/news/489137.html

相关文章:

  • 安宝特方案 | AR助力紧急救援,科技守卫生命每一刻!
  • 蓝桥杯每日真题 - 第18天
  • HTTP 协议应用场景
  • 【Linux庖丁解牛】—Linux基本指令(下)!
  • python: generator model using sql server 2019
  • Kafka怎么发送JAVA对象并在消费者端解析出JAVA对象--示例
  • 深度学习(1)
  • golang 嵌入式armv7l压缩编译打包
  • Makefile 之 join
  • 集合卡尔曼滤波(Ensemble Kalman Filter),用于二维滤波(模拟平面上的目标跟踪),MATLAB代码
  • 北京申请中级职称流程(2024年)
  • ubuntu.24安装cuda
  • unity li2cpp逆向原理是什么?
  • Python网络爬虫实践案例:爬取猫眼电影Top100
  • 卷积神经网络(CNN)中的权重(weights)和偏置项(bias)
  • 华为FusionCube 500-8.2.0SPC100 实施部署文档
  • Android 网络请求(二)OKHttp网络通信
  • npm上传自己封装的插件(vue+vite)
  • 如何在Word文件中设置水印以及如何禁止修改水印
  • .NET桌面应用架构Demo与实战|WPF+MVVM+EFCore+IOC+DI+Code First+AutoMapper
  • el-table根据指定字段合并行和列+根据屏幕高度实时设置el-table的高度
  • 图像处理 之 凸包和最小外围轮廓生成
  • 萤石设备视频接入平台EasyCVR私有化视频平台视频监控系统的需求及不同场景摄像机的选择
  • 网络安全之接入控制
  • Sqlite: Java使用、sqlite-devel
  • 京东面试题目分享
  • STM32 使用 STM32CubeMX HAL库实现低功耗模式
  • 技术美术百人计划 | 《2.1 色彩空间介绍》笔记
  • 如何在 Ubuntu 上安装 Mosquitto MQTT 代理
  • css使用弹性盒,让每个子元素平均等分父元素的4/1大小