• SpringMVC:获取请求数据


    1. 通过@RequestParma注解接收

    /***
     * value和name都可以使用,互为别名
     * 如果此处设置了需要什么参数而前端请求时没有提供则会报400(请求参数不一致错误)
     * required参数用于设置该参数是否为必须传递参数,默认为true必须传递
     * default设置默认值
     */
    1. @RequestMapping(value = "/user/register")
    2. public String register(
    3. //通过注解直接获取请求报文中携带的参数
    4. @RequestParam(value = "username", required = true) String username,
    5. @RequestParam(name = "password") String password,
    6. @RequestParam(value = "hobby") String[] hobby) {
    7. System.out.println("username=" + username);
    8. System.out.println("password=" + password);
    9. System.out.println(hobby);
    10. return "ok";
    11. }

     2. 依靠控制器方法上的形参名接收

     @RequestParam 这个注解是可以省略的,如果方法形参的名字和提交数据时的name相同,则 @RequestParam 可以省略。

    但有一个前提:如果你采用的是Spring6+版本,你需要在pom.xml文件中指定编译参数'-parameter',配置如下:

    1. <build>
    2. <plugins>
    3. <plugin>
    4. <groupId>org.apache.maven.pluginsgroupId>
    5. <artifactId>maven-compiler-pluginartifactId>
    6. <version>3.12.1version>
    7. <configuration>
    8. <source>21source>
    9. <target>21target>
    10. <compilerArgs>
    11. <arg>-parametersarg>
    12. compilerArgs>
    13. configuration>
    14. plugin>
    15. plugins>
    16. build>

    Controller中的方法只需要这样写:**形参的名字必须和提交的数据的name一致!!!!! 

    1. @PostMapping(value="/register")
    2. public String register(String username, String password, String sex, String[] hobby, String intro){
    3. System.out.println(username + "," + password + "," + sex + "," + Arrays.toString(hobby) + "," + intro);
    4. return "success";
    5. }

    3. 使用pojo类接收请求参数

    创建pojo对象,springmvc通过反射获取pojo类并通过该类的属性名进行匹配存值
    准确来说通过set方法进行匹配赋值,即set方法的名称必须和前端前端传过来的参数名保持一致即可(如:setName,前端传的参数Name=...)
    
    1. public class User {
    2. private String username;
    3. private String password;
    4. private String[] hobby;
    1. @RequestMapping(value = "/user/pojo")
    2. public String pojo(User user) {
    3. System.out.println(user);
    4. for (String s : user.getHobby()) {
    5. System.out.println(s);
    6. }
    7. return "ok";
    8. }

    4. @RequestHead注解

    该注解的作用是:将`请求头信息`映射到`方法的形参上`。和RequestParam注解功能相似,RequestParam注解的作用:将`请求参数`映射到`方法的形参`上。当然,对于RequestHeader注解来说,也有三个属性:value、required、defaultValue,和RequestParam一样,这里就不再赘述了。 

    1. @PostMapping("/register")
    2. public String register(User user,
    3. @RequestHeader(value="Referer", required = false, defaultValue = "")
    4. String referer){
    5. System.out.println(user);
    6. System.out.println(referer);
    7. return "success";
    8. }

     5. @CookieValue注解

    该注解的作用:将`请求提交的Cookie数据`映射到`方法形参`上同样是有三个属性:value、required、defaultValue 

     前端页面发送cookie代码

    1. <script type="text/javascript">
    2. function sendCookie(){
    3. document.cookie = "id=123456789; expires=Thu, 18 Dec 2025 12:00:00 UTC; path=/";
    4. document.location = "/springmvc/register";
    5. }
    6. script>
    7. <button onclick="sendCookie()">向服务器端发送Cookiebutton>

     后端controller代码

    1. @GetMapping("/register")
    2. public String register(User user,
    3. @RequestHeader(value="Referer", required = false, defaultValue = "")
    4. String referer,
    5. @CookieValue(value="id", required = false, defaultValue = "2222222222")
    6. String id){
    7. System.out.println(user);
    8. System.out.println(referer);
    9. System.out.println(id);
    10. return "success";
    11. }

  • 相关阅读:
    物联网协议基础知识
    【VASP】POTCAR文件
    MySQL表的增删改查(进阶)
    png图片打包plist工具,手把手教你使用pngPackerGUI_V2.0
    自媒体新人,如何快速积累粉丝,我的业余Python能帮助我干些什么
    K8s版本升级---v1.21.0至v1.21.12
    BeanFactory版本的快速入门
    面试必备:2019年Java 最常见 100+ 面试题解析
    golang常用库之olivere elastic包 | go操作elasticsearch
    MySQL基础 — 多表查询以及事务管理
  • 原文地址:https://blog.csdn.net/2301_79526467/article/details/139375319