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'}";
}
  • 发送请求

相关推荐
_Evan_Yao5 小时前
Redis 缓存穿透、击穿、雪崩,一次讲清!
java·spring·mybatis
梓豪csd6 小时前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
秋饼6 小时前
Spring AI 2.1 Message Parts 深度实战:推理签名回放与跨轮记忆持久化的源码级落地
java·ai·技术分享·后端开发
thefool1122667 小时前
TCP 1
java·1024程序员节
金銀銅鐵9 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(下)
java·后端·ai编程
AI人工智能+电脑小能手9 小时前
一次请求打几个下游,这个Java并行任务工具类6个方法按序聚合
java·线程池·并发编程·1024程序员节·批量处理·并行任务
paopaokaka_luck11 小时前
心理咨询管理系统(WebSocket实时沟通、基于用户的协同过滤、 ECharts多维分析、 预约业务流程、预约校验与定时处理)
java·vue.js·spring boot·mysql·spring·echarts·1024程序员节
2301_322414280411 小时前
springboot农产品交易平台的设计与实现08055-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·spring boot·redis·mysql·tomcat·maven·mybatis
考虑考虑12 小时前
JDK26的JEP 500属性
java·后端·java ee
LMT流氓兔12 小时前
第五单元——第十二课:把脚本整理成项目
java·数据库·python·langchain·1024程序员节