Springboot多种请求参数

Springboot中有多种请求参数:简单参数、实体对象参数、数组、集合参数、日期时间参数、json参数......下列代码为每一种参数都写了一个简单的例子

java 复制代码
package com.wzb;

import com.wzb.pojo.Student;
import com.wzb.pojo.User;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;

// RestController注解必须要
@RestController
public class SimpleParam {
//    @RequestMapping("/simpleParam")
//    public String simpleParam(HttpServletRequest request) {
//        String name = request.getParameter("name");
//        String ageStr = request.getParameter("age");
//        int age = Integer.parseInt(ageStr);
//        System.out.println(name + ": " + age);
//        return "OK";
//    }

    // 简化写法
    /* 成功与否和函数名无关,主要是@RequestMapping("/getMessage")要写正确 */
    /* 但是如果要简化写法,则函数参数名字必须和请求的名字一样,否则将出现null */
    @RequestMapping("/simpleParam")
    public String A(String name, int age) {
        System.out.println(name + ": " + age);
        return "OK";
    }

    /* 不推荐写法:参数名字和请求的名字不一样,但是可以用@RequestParam完成映射(建议别这么写) */
//    public String simpleParam(@RequestParam(name = "name")String userName, Integer age) {
//        System.out.println(userName + ": " + age);
//        return "OK";
//    }

    /* 传递实体对象 */
    /* 但是请求的名字也必须和类中的属性保持一致 */
    @RequestMapping("/simplePojo")
    public String simpleParam(User user) {
        System.out.println(user);
        return "OK";
    }

    /* 传递复杂的实体对象 */
    /* 请求参数名和形参对象属性相同,按照对象层次结构关系可接收嵌套的POJO属性参数 */
    /* 如:name=tom&age=18&address.province=chongqing&address.city=chongqing */
    @RequestMapping("/complexPojo")
    public String simplePojo(Student student) {
        System.out.println(student);
        return "OK";
    }

    /* 数组集合参数 */
    /* 数组参数 */
    // 假如有多个一样的请求参数,那么可以用数组来接收,数组名字必须和请求参数相同
    @RequestMapping("/arrayParam")
    /* 假设传递hobby,有多个hobby,那么就可以用数组接收 */
    public String arrayParam(String[] hobby) {
        // 使用Arrays中的toString方法将数组的内容输出
        System.out.println(Arrays.toString(hobby));
        return "OK";
    }

    /* 集合参数 */
    // 1.因为Spring默认是用数组来接收类似的请求参数,所以说想要用List集合,前面必须加上@RequestParam注解
    // 不加@RequestParam则会严重报错500
    // 2.和数组一样,集合的名字也必须和请求参数一致
    @RequestMapping("/listParam")
    public String listParam(@RequestParam List<String> hobby) {
        System.out.println(hobby);
        return "OK";
    }

    /* 日期时间参数 */
    // 1.用LocalDateTime类作为参数
    // 2.用@DateTimeFormat中的pattern限定时间的格式
    @RequestMapping("/dateParam")
    public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime) {
        System.out.println("现在的时间是: " + updateTime);
        return "OK";
    }

    /* json参数 */
    // 1.json请求参数必须用post发送
    // 2.用实例对象接收json参数,实例对象中的属性必须和json的key值一一对应
    @RequestMapping("/jsonParam")
    public String jsonParam(@RequestBody Student student) {
        System.out.println(student);
        return "OK";
    }
}
相关推荐
hqxstudying32 分钟前
Java异常处理
java·开发语言·安全·异常
愿你天黑有灯下雨有伞2 小时前
告别复杂配置!Spring Boot优雅集成百度OCR的终极方案
spring boot·百度·ocr
wjs20243 小时前
状态模式(State Pattern)
开发语言
我命由我123453 小时前
Kotlin 数据容器 - List(List 概述、创建 List、List 核心特性、List 元素访问、List 遍历)
java·开发语言·jvm·windows·java-ee·kotlin·list
liulilittle3 小时前
C++ TAP(基于任务的异步编程模式)
服务器·开发语言·网络·c++·分布式·任务·tap
励志要当大牛的小白菜5 小时前
ART配对软件使用
开发语言·c++·qt·算法
武子康6 小时前
Java-80 深入浅出 RPC Dubbo 动态服务降级:从雪崩防护到配置中心秒级生效
java·分布式·后端·spring·微服务·rpc·dubbo
爱装代码的小瓶子7 小时前
数据结构之队列(C语言)
c语言·开发语言·数据结构
YuTaoShao8 小时前
【LeetCode 热题 100】131. 分割回文串——回溯
java·算法·leetcode·深度优先
源码_V_saaskw8 小时前
JAVA图文短视频交友+自营商城系统源码支持小程序+Android+IOS+H5
java·微信小程序·小程序·uni-app·音视频·交友