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