SpringMVC:获取请求数据

1. 通过@RequestParma注解接收

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

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

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

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

<build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.12.1</version>
                    <configuration>
                        <source>21</source>
                        <target>21</target>
                        <compilerArgs>
                            <arg>-parameters</arg>
                        </compilerArgs>
                    </configuration>
                </plugin>
            </plugins>
        </build>

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

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

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

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

4. @RequestHead注解

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

@PostMapping("/register")
public String register(User user, 
                       @RequestHeader(value="Referer", required = false, defaultValue = "") 
                       String referer){
    System.out.println(user);
    System.out.println(referer);
    return "success";
}

 5. @CookieValue注解

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

 前端页面发送cookie代码

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

 后端controller代码

    @GetMapping("/register")
    public String register(User user,
                           @RequestHeader(value="Referer", required = false, defaultValue = "")
                           String referer,
                           @CookieValue(value="id", required = false, defaultValue = "2222222222")
                           String id){
        System.out.println(user);
        System.out.println(referer);
        System.out.println(id);
        return "success";
    }

相关推荐

  1. SpringMVC获取请求数据

    2024-06-05 21:02:01       8 阅读
  2. SpringMVC获取请求参数和域对象共享数据

    2024-06-05 21:02:01       23 阅读
  3. SpringMVC映射请求数据

    2024-06-05 21:02:01       39 阅读
  4. springMVC获取请求参数的方式

    2024-06-05 21:02:01       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-05 21:02:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-05 21:02:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-05 21:02:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-05 21:02:01       18 阅读

热门阅读

  1. k8s集群修改apiserver的ip地址

    2024-06-05 21:02:01       7 阅读
  2. LeetCode 每日一题 数学篇 LCR 182.动态口令

    2024-06-05 21:02:01       6 阅读
  3. 如何区分A类B类C类网络地址?

    2024-06-05 21:02:01       8 阅读
  4. Shell编程之免交互

    2024-06-05 21:02:01       9 阅读
  5. 深度解读chatGPT基本原理

    2024-06-05 21:02:01       7 阅读
  6. onnx模型转换到rknn脚本

    2024-06-05 21:02:01       5 阅读
  7. # SpringBoot 如何让指定的Bean先加载

    2024-06-05 21:02:01       8 阅读
  8. Linux: network: arp 导致问题一例

    2024-06-05 21:02:01       10 阅读
  9. iOS Hittest 机制和实际应用之一 hittest方法

    2024-06-05 21:02:01       8 阅读