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

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.kler.cn/a/409286.html

相关文章:

  • 【C++】static修饰的“静态成员函数“--静态成员在哪定义?静态成员函数的作用?
  • 【隐私计算大模型】联邦深度学习之拆分学习Split learning原理及安全风险、应对措施以及在大模型联合训练中的应用案例
  • 图片生成视频-右进
  • 近源渗透|HID ATTACK从0到1
  • 多目标优化算法:多目标极光优化算法(MOPLO)求解ZDT1、ZDT2、ZDT3、ZDT4、ZDT6,提供完整MATLAB代码
  • 【Ubuntu24.04】服务部署(Docker)
  • Python学习——字符串操作方法
  • Unity Shader常见函数 内置Built-in/URP等效函数
  • 【WPF】Prism学习(九)
  • android-sdk 安装脚本
  • BERT的基本理念
  • Github工作流
  • 高级网络安全——移动IP (GSM认证和密钥协议)(week6)
  • Win11下载和配置VSCode(详细讲解)
  • ant vue3 form嵌套校验
  • C++ 优先算法 —— 长度最小的子数组(滑动窗口)
  • SD NAND 的 SDIO在STM32上的应用详解
  • 最新‌VSCode保姆级安装教程(附安装包)
  • vue2 src_Todolist编辑($nextTick)
  • java SQL中使用for update作用和用法
  • 输入三个整数x,y,z,请把这三个数由小到大输出。-多语言实现
  • Scala案例:全文单词统计
  • 【架构】主流企业架构Zachman、ToGAF、FEA、DoDAF介绍
  • 资产管理运营系统mobilefront2前台文件上传漏洞
  • XMOS携手合作伙伴晓龙国际联合推出集成了ASRC等功能的多通道音频板
  • 面试干货:软件测试常见面试题(附答案)