SpringMVC系列(四)(请求处理的十个实验(下))

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

0 引言

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

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

1 十个请求处理实验中的后五个

1.1 实验六 POJO级联封装复杂属性

首先我们现根据实验六的内容先填写相关内容,点击注册:

并看一下发送的请求为Get类型,我们先来看一下它的请求地址后面带的参数:

1)username=Lin&password=1234&cellphone=12345

2)&address.province=福建省&address.city=厦门市&address.area=翔安区

3)&hobby=足球&hobby=篮球

4)&sex=男

5)&grade=一年级&agreement=on

我们发现1/4/5行都是简单类型属性;第二行是一个需要封装成一个POJO对象(因为是.出来的);第三行需要封装成一个数组,这样的一个复杂的POJO类型,后端应该怎么样来接这个数据呢?

首先必须要先写一个POJO对象来封装他们:

import lombok.Data;

@Data
public class People {
    //基础属性
    private String username;
    private String password;
    private String cellphone;
    private boolean agreement;
    private String sex;
    private String grade;
    //POJO对象
    private Address address;
    //数组
    private String[] hobby;
    
}

@Data
class Address {
    private String province;
    private String city;
    private String area;
}

然后编写Comtroller代码:

    @RequestMapping(value = "/handle06")
    public String handle06(People people){
        System.out.println(people);
        return "ok!!!";
    }

随后进行测试:

网页端:

后端:

1.2 实验七 @RequestBody注解接收JSON格式数据

实验七让我们自己使用postman进行传输JSON格式的数据,

首先编写后端java代码(需要带上注解@RequestBody,表明前端传进来的数据是JSON格式的):

    @RequestMapping(value = "/handle07")
    public String handle07(@RequestBody People people){
        System.out.println(people);
        return "ok!!!";
    }

我们就拿实验六中的数据,进行JSON格式的封装(JSON格式的数据如下,省的大伙儿再打一遍了):

{

    "username":"小林学编程",

    "password":"123456",

    "cellphone":"1234567",

    "agreement":"true",

    "sex":"男",

    "hobby":["篮球","足球"],

    "address":{

        "province":"福建省",

        "city":"厦门市",

        "area":"翔安区"

    }

}

随后打开postman进行测试:

进行测试:

postman端:

后端:

1.3 实验八 文件上传

进入实验八:

当我们发送注册请求时:

看F12中的请求体中的数据,有两个是图片文件:

要想后端收到文件可以这么写,使用MultipartFile类进行接收:

    @RequestMapping(value = "/handle08")
    public String handle08(People people,
                           @RequestParam("headerImg") MultipartFile headerImg,
                           @RequestParam("lifeImg") MultipartFile lifeImg
                           ) throws IOException {
        //获得原始文件名
        String headerImgName = headerImg.getOriginalFilename();
        
        // 保存图片到本地
        headerImg.transferTo(new File("D:\\"+headerImgName));
        return "ok!!!";
    }

并将文件保存至我的D盘当中。

测试;

网页端:

文件是否导入D盘中:

1.4 实验九 HttpEntity获得整个请求头和请求体

前面我们分别测试了单独获得请求头和请求体的内容,我们有没有一种方法两种都能获得呢?有的兄弟有的,那就是HttpEntity类,java代码可以这样写:

    @RequestMapping(value = "/handle09")
    public String handle09(HttpEntity<People> httpEntity){
        //获得请求头
        System.out.println("请求头" + httpEntity.getHeaders());
        //获得请求体
        System.out.println("请求体" + httpEntity.getBody());
        return "ok!!!";
    }

注意:HttpEntity<People>中的泛型指的是请求体中的数据类型!

然后使用postman发出请求:

测试结果:

postman端:

终端:

1.5 实验十 传入原生API(不推荐)

如果你是一个怀旧的人,可以使用原生的web处理API进行调用(这种方法不推荐,有更好的工具为啥不用)

    @RequestMapping(value = "/handle10")
    public String handle10(HttpServletRequest request, HttpServletResponse  response) throws IOException {
        //进行原始的操作
        return "ok!!!";
    }

具体的操作留给读者自己去写具体的操作,本篇不再重复。

2 十个实验的测试代码

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

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

参考:

P96-P100

100.请求处理 -实验10:传入原生API_哔哩哔哩_bilibili


网站公告

今日签到

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