SpringMVC:获取请求数据

1. 通过@RequestParma注解接收

复制代码
/***
 * value和name都可以使用,互为别名
 * 如果此处设置了需要什么参数而前端请求时没有提供则会报400(请求参数不一致错误)
 * required参数用于设置该参数是否为必须传递参数,默认为true必须传递
 * default设置默认值
 */
java 复制代码
@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',配置如下:

html 复制代码
<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一致!!!!!

java 复制代码
@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=...)
java 复制代码
public class User {
    private String username;
    private String password;
    private String[] hobby;
java 复制代码
@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一样,这里就不再赘述了。

java 复制代码
@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代码

html 复制代码
<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代码

java 复制代码
    @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";
    }
相关推荐
后台模板学习4 分钟前
Go Web开发中任务调度框架的源码解析与高可用实现方案
开发语言·后端·golang
西瓜拿铁好喝8 分钟前
开源和闭源 AI 办公工具,分别适合谁
java·前端·数据库
学长毕设10 分钟前
基于SpringBoot的校园礼服租赁系统的设计与实现
java·spring boot·后端
明天也要努力学习16 分钟前
深入理解 JVM 垃圾回收(GC)
java·jvm
xiaoye-duck19 分钟前
《C++ 项目:手写大模型接入 SDK》DeepSeek接口设计(上):初始化和全量响应
开发语言·网络·c++·语言模型
golang学习记23 分钟前
IDEA 断点调试技巧:拖拽
java·ide·intellij-idea
fpcc24 分钟前
跟我学c++中级篇—streambuf在glog中的应用分析
开发语言·c++
Sayai25 分钟前
Flink 日志解析任务性能优化实战:正则/Grok 预编译、Guava 缓存权重陷阱与 ES 写入隔离
java·大数据·性能优化·flink·实时计算
吾与谁归in26 分钟前
C#脚本工具,支持智能提示自动补全(WPF + Roslyn + AvalonEdit)
开发语言·c#·wpf
计算机毕设定制辅导-无忧学长27 分钟前
《基于物品协同过滤的闲置书换购微信小程序设计开发》
java·vue.js·spring boot·微信小程序·uniapp·闲置书换购微信小程序·物品协同过滤算法