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

SpringBoot--获取路径中的参数(x-www-form-urlencoded)--方法/实例

原文网址:SpringBoot--获取路径中的参数(x-www-form-urlencoded)--方法/实例_IT利刃出鞘的博客-CSDN博客

简介

        本文用示例介绍SpringMVC如何获取路径中的参数。也就是: Content-Type为x-www-form-urlencoded。

代码

Controller

BasicController.java

package com.example.demo.controller;

import com.example.demo.entity.User;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;
import java.util.List;

// localhost:8080/basic/no_annotation/string1
@RequestMapping("/basic")
@RestController
public class BasicController {
    @RequestMapping("/1")
    public String test1(int intVal, Long longVal, String myStr) {
        System.out.println("intVal  : " + intVal);
        System.out.println("longVal : " + longVal);
        System.out.println("myStr   : " + myStr);
        return "Hello world";
    }

    @RequestMapping("/2")
    public User test2(@RequestParam Integer intVal,
                      @RequestParam(value = "my_str", required = false) String[] myStr,
                      @RequestParam String[] password,
                      @RequestParam List<Integer> scoreArray,
                      @RequestParam Integer age,
                      User user) {
        System.out.println("intVal     : " + intVal);
        System.out.println("age        : " + age);
        System.out.println("myStr      : " + Arrays.asList(myStr));
        System.out.println("password   : " + Arrays.asList(password));
        System.out.println("scoreArray : " + scoreArray);

        return user;
    }

    @RequestMapping("/3")
    public User test3(@RequestBody User user) {
        return user;
    }
}

Entity

User.java

package com.example.demo.entity;

import lombok.Data;
import java.util.List;

@Data
public class User {
    private String name;
    private Integer age;
    private String[] password;
    private List<Integer> scoreArray;
}

Account.java

package com.example.demo.entity;

import lombok.Data;
import java.io.Serializable;

@Data
public class Account implements Serializable {
    private String phoneNum;
    private String[] emails;
}

测试

测试1:基本类型为空导致错误

http://localhost:8080/basic/1

后端打印

java.lang.IllegalStateException: Optional int parameter 'intVal' is present but cannot be translated into a null value due to being declared as a primitive type. Consider declaring it as object wrapper for the corresponding primitive type.

前端结果

测试2正常操作

其实也不正常,最好不要用基本类型接收。

http://localhost:8080/basic/1?intVal=2&myStr=hehe

后端

intVal  : 2
longVal : null
myStr   : hehe

前端

测试3正常操作

http://localhost:8080/basic/2?intVal=2&my_str=Tony,Stark&name=Jarvis&age=21&password=ab,cd&scoreArray=99,98&phoneNum=12

后端

intVal     : 2
age        : 21
myStr      : [Tony, Stark]
password   : [ab, cd]
scoreArray : [99, 98]

前端

结论

  • 如果一个参数,实体类与接口参数都有,则都会赋值。
  • 若实体类中有数组/List 成员,也会对它直接赋值。
  • 若实体类含有实体类,无法赋值。因为参数中没有与实体类相同名字的key,此时就要用form-data或者json了。(或者x-www-urlencoded也有写类参数的方法,目前不知道)

测试4@RequestParam缺少参数访问(失败)

http://localhost:8080/basic/2?intVal=2&my_str=Tony,Stark&name=Jarvis&age=21&password=ab,cd&phoneNum=12

后端

2020-07-04 18:00:37.222  WARN 15844 --- [nio-8080-exec-8] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required List parameter 'scoreArray' is not present]

前端

测试5用@RequestBody接收(失败)

http://localhost:8080/basic/3?intVal=2&my_str=Tony,Stark&name=Jarvis&age=21&password=ab,cd&scoreArray=99,98&phoneNum=12

后端

2020-07-04 14:02:55.954  WARN 15844 --- [nio-8080-exec-3] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public com.example.demo.entity.User com.example.demo.controller.BasicController.test3(com.example.demo.entity.User)]

前端

相关文章:

  • call()、apply()、bind() 区别、使用场景、实现方式
  • python3 爬虫(初试牛刀)
  • excel的frequency函数的用法和实例
  • 程序员这个身份,比你想象的还值钱!
  • Feng Office 3.7.0.5 - 文件上传
  • C#编程流程控制与集合类型
  • JADE: Adaptive Differential Evolution withOptional External Archive
  • Python学习基础笔记五——列表
  • 【深度学习】使用深度学习框架来简洁地实现线性回归模型
  • 超神之路 数据结构 3 —— Stack栈实现及应用
  • 面试官问:Spring 如何解决循环依赖?
  • 动力节点索引优化解决方案学习笔记——查询优化
  • 400Gbps 网络面临的挑战
  • 【 C++ 】特殊类设计
  • 【UML】活动图Activity Diagram、状态机图State Machine Diagram、顺序图Sequence Diagram
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【翻译】babel对TC39装饰器草案的实现
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • JAVA 学习IO流
  • JavaScript服务器推送技术之 WebSocket
  • JSONP原理
  • laravel5.5 视图共享数据
  • LintCode 31. partitionArray 数组划分
  • magento2项目上线注意事项
  • React-redux的原理以及使用
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 如何优雅地使用 Sublime Text
  • 因为阿里,他们成了“杭漂”
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #HarmonyOS:Web组件的使用
  • #QT(串口助手-界面)
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (C++)八皇后问题
  • (二)正点原子I.MX6ULL u-boot移植
  • (转)iOS字体
  • (转)Mysql的优化设置
  • (转)项目管理杂谈-我所期望的新人
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET 反射 Reflect
  • .net 提取注释生成API文档 帮助文档
  • .net开发引用程序集提示没有强名称的解决办法
  • .NET连接数据库方式
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • [ACM] hdu 1201 18岁生日
  • [Angular 基础] - 指令(directives)
  • [C#]C#学习笔记-CIL和动态程序集
  • [C#]DataTable常用操作总结【转】
  • [c]扫雷
  • [elastic 8.x]java客户端连接elasticsearch与操作索引与文档
  • [ERROR] 不再支持目标选项 5。请使用 7 或更高版本