码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SpringBoot--获取路径中的参数(x-www-form-urlencoded)--方法/实例


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

    简介

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

    代码

    Controller

    BasicController.java

    1. package com.example.demo.controller;
    2. import com.example.demo.entity.User;
    3. import org.springframework.web.bind.annotation.*;
    4. import java.util.Arrays;
    5. import java.util.List;
    6. // localhost:8080/basic/no_annotation/string1
    7. @RequestMapping("/basic")
    8. @RestController
    9. public class BasicController {
    10. @RequestMapping("/1")
    11. public String test1(int intVal, Long longVal, String myStr) {
    12. System.out.println("intVal : " + intVal);
    13. System.out.println("longVal : " + longVal);
    14. System.out.println("myStr : " + myStr);
    15. return "Hello world";
    16. }
    17. @RequestMapping("/2")
    18. public User test2(@RequestParam Integer intVal,
    19. @RequestParam(value = "my_str", required = false) String[] myStr,
    20. @RequestParam String[] password,
    21. @RequestParam List scoreArray,
    22. @RequestParam Integer age,
    23. User user) {
    24. System.out.println("intVal : " + intVal);
    25. System.out.println("age : " + age);
    26. System.out.println("myStr : " + Arrays.asList(myStr));
    27. System.out.println("password : " + Arrays.asList(password));
    28. System.out.println("scoreArray : " + scoreArray);
    29. return user;
    30. }
    31. @RequestMapping("/3")
    32. public User test3(@RequestBody User user) {
    33. return user;
    34. }
    35. }

    Entity

    User.java

    1. package com.example.demo.entity;
    2. import lombok.Data;
    3. import java.util.List;
    4. @Data
    5. public class User {
    6. private String name;
    7. private Integer age;
    8. private String[] password;
    9. private List scoreArray;
    10. }

    Account.java

    1. package com.example.demo.entity;
    2. import lombok.Data;
    3. import java.io.Serializable;
    4. @Data
    5. public class Account implements Serializable {
    6. private String phoneNum;
    7. private String[] emails;
    8. }

    测试

    测试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

    后端

    1. intVal : 2
    2. longVal : null
    3. 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

    后端

    1. intVal : 2
    2. age : 21
    3. myStr : [Tony, Stark]
    4. password : [ab, cd]
    5. 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)]
    

    前端

  • 相关阅读:
    寻找更好的分类模型loss
    ThreadLocal的应用及原理
    江苏全面推进双重预防数字化建设,强化落实危化企业主体责任
    【C++游戏引擎Easy2D】基于Node节点展开的Text文本拓展详解
    名词解析与经验分享(前端)
    docker进入容器报:Error response from daemon Container is not running
    【附源码】计算机毕业设计JAVA宠物收养管理
    软考 系统架构设计师系列知识点之边缘计算(3)
    大文件RandomAccessFile类来分片传输
    vue环境搭建
  • 原文地址:https://blog.csdn.net/feiying0canglang/article/details/126954531
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号