SpringMVC系列(三)(请求处理的十个实验(上))

发布于:2025-06-29 ⋅ 阅读:(17) ⋅ 点赞:(0)

0 引言

作者正在学习SpringMVC相关内容,学到了一些知识,希望分享给需要短时间想要了解SpringMVC的读者朋友们,想用通俗的语言讲述其中的知识,希望与诸位共勉,共同进步!

本系列会持续更新!!可以放心食用!

1 本篇内容的十个请求处理实验

主要通过以上10个实验来充分掌握请求参数的处理!!

2 十个请求处理实验中的前五个

2.1 实验一 使用普通变量,请求参数

做这10个实验之前,需要有一个发送请求参数的前端网页,这个网页已经准备好了,文件可以在此连接中下载:
    前端请求文件 

然后将它放进当前项目工中的src--resources--static目录下,当项目启动时,在网页中输入localhost:8080(如果在配置文件中修改过端口的,请使用修改后的端口)即可访问下面这个页面:

当我们输入用户名/密码/电话号码以及是否同意用户协议后,点击注册:

会发现网址上的请求地址为:

因为键值对都是写在请求地址中,所以我们可以确定前端是以Get类请发送给的并且访问的地址为/handle01,所以我们需要在后端编写:

    @RequestMapping(value = "/handle01")
    public String handle01(String username, String password, String cellphone, boolean  agreement){
        System.out.println("username:"+username);
        System.out.println("password:"+password);
        System.out.println("cellphone:"+cellphone);
        System.out.println("agreement:"+agreement);
        return "ok!!!";

当发送过来的时候是普通的参数时,我们可以直接在方法的变量中接下前端送过来的数值,运行成功后,网页端:

后端:

需要注意的是:方法中的变量名称需要和前端发来请求所带的关键词一一对应!!!!,如果我想随心所欲地给变量取名字,那应该怎么办呢?使用实验二的方法!

2.2 实验二 @RequestParam 明确参数使用

变量名可以随便取名称,但代价就是要在变量名前使用@RequestParam注解标注出这个变量对应的关键词是什么,代码是这样写的:

    @RequestMapping(value = "/handle02")
    public String handle02(@RequestParam("username") String un,
                           @RequestParam("password") String pwd,
                           @RequestParam("cellphone") String cp,
                           @RequestParam("agreement") boolean  ok){
        System.out.println("username:"+un);
        System.out.println("password:"+pwd);
        System.out.println("cellphone:"+cp);
        System.out.println("agreement:"+ok);
        return "ok!!!";

这样的话当实验二点击注册后:

网页端:

后端:

2.3 实验三 使用POJO匹配封装所有的参数

有没有发现,如果使用上面来两种实验的话,有太多属性值需要一个一个传输,非常麻烦,所以实验三给出了一种很方便的写法。

进入实验三:

然后先发送个注册请求,点击F12打开网页中的请求配置发现是以POST的方式发送的,内容应该被保存在请求体中:

所以可以在后端java编写代码:

首先先编写一个Bean对象,并一一封装了相对应的属性值:

import lombok.Data;

@Data
public class person {
    private String username;
    private String password;
    private String cellphone;
    private boolean agreement;
}

随后在Comtroller中编写:

    @RequestMapping(value = "/handle03")
    public String handle03(Person  person){
        System.out.println(person);
        return "ok!!!";
    }

网页端:

后端:

为什么可以这样?因为SpringBoot可以自动把请求参数与POJO中的输性进行一一对应!!

2.4 实验四 使用@RequstHeader注解获得请求头中的内容

进入实验四:

然后先发送个请求,点击F12打开网页中的请求配置中请求标头:

就希望获得其中某些键值对,我应该如何编写程序呢?比如我想获得请求头中的Host:

    @RequestMapping(value = "/handle04")
    public String handle04(@RequestHeader("Host") String host){
        System.out.println(host);
        return "ok!!!";
    }

网页端:

后端:

打印出了Host关键词中的数值:

2.5 实验五 获取CookieValue的值

如果有不知道Cookie是什么的同学可以看看:

阿里二面:你说说Cookie、Session、Token的区别?傻傻分不清。。。_哔哩哔哩_bilibili

我们可以在这里创建一个Cookie的键值对作为测试:

当我加上去之后,只要网站上不关闭,每次发送请求都可以在请求头中看见Cookie的数值:

程序:

    @RequestMapping(value = "/handle05")
    public String handle05(@CookieValue("hehe") String hehe){
        System.out.println(hehe);
        return "ok!!!";
    }

网页端:

后端:

 3 十个实验的测试代码

如果大家也不想敲代码的话,那就可以直接在我的gitee地址里面下载十个实验的测试代码:

lin/请求测试十个实验https://gitee.com/lin2002wei/Request_code

参考:

P91-P95

095.请求处理 - 实验5:@CookieValue - 获取cookie的值_哔哩哔哩_bilibili


网站公告

今日签到

点亮在社区的每一天
去签到