SSM系列——SpringMVC请求数据
SpringMVC请求参数
一般我们有:
- 基本类型参数
- POJO类型参数
- 数组类型参数
- 集合类型参数
Http请求方式
| 方法 | 说明 |
|---|---|
| get | 请求指定的页面信息,并返回实体主体 |
| post | 向指定资源提交数据进行处理请求(例如提交表单或上传文件)。数据被包含在请求体中,POST请求可能会导致新的资源建立或已有资源修改 |
| head | 类似于GET请求,只不过返回的响应中没有具体内容,用于获取报头 |
| options | 允许客户端查看服务器的内容 |
| put | 从客户端向服务器传送的数据取代指定的文档内容 |
| delete | 请求服务器删除指定页面 |
| trace | 回显服务器收到的请求,主要用于测试或诊断 |
| connect | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 |
5种Web开发的常见状态码及含义
1)200
表示服务器成功的表示服务器成功处理了客户端的请求。客户端的请求成功,响应消息返回正常的请求结果。
(2)302
表示请求的资源临时从不同的URI响应请求,但请求者应继续使用原有位置来进行以后的请求。例如,在请求重定向中,临时URI应该是响应的Location头字段所指向的资源。
(3)304
状态码304表示客户端缓存的版本是最新的,客户端应该继续使用它。否则,服务器将使用状态码200返回所请求的文档
(4)404
表示服务器找不到请求的资源。
(5)500
表示服务器发生错误,无法处理客户端的请求。
1. 基本类型参数请求
RequestController
package com.example.mvc1.controller;
import com.example.mvc1.pojo.DataPojo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RequestController {
@GetMapping("req1")
@ResponseBody
public void req1(String enter){
System.out.println(enter);
}
}
结果展示
2. POJO类型参数请求
DataPojo
package com.example.mvc1.pojo;
public class DataPojo {
private int id;
private String name;
public DataPojo(int id, String name) {
this.id = id;
this.name = name;
}
public DataPojo() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "DataPojo{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
RequestController
package com.example.mvc1.controller;
import com.example.mvc1.pojo.DataPojo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RequestController {
@GetMapping("req2")
@ResponseBody
public void req2(DataPojo dataPojo){
System.out.println(dataPojo.toString());
}
}
结果展示
3. 数组类型参数请求
RequestController
@GetMapping("req3")
@ResponseBody
public void req3(String[] str) {
for (String s : str) {
System.out.println(s);
}
}
结果展示
4. 集合类型参数请求(原始)
使用场景上比较多见如前端传递集合类型如
{
username:'zhangsan'
job:[
{
id:1,
name:'司机'
},
{
id:2,
name:'保安'
}
{
id:3,
name:'老师'
}
]
}
RequestController
@GetMapping("req4")
@ResponseBody
public void req4(ObReq obReq) {
obReq.toString();
}
ObReq
package com.example.mvc1.pojo;
import java.util.List;
public class ObReq {
private String username;
private List<Job> list;
public ObReq(String username, List<Job> list) {
this.username = username;
this.list = list;
}
public ObReq() {
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public List<Job> getList() {
return list;
}
public void setList(List<Job> list) {
this.list = list;
}
@Override
public String toString() {
return "ObReq{" +
"username='" + username + '\'' +
", list=" + list +
'}';
}
}
Job
package com.example.mvc1.pojo;
public class Job {
private int id;
private String name;
public Job(int id, String name) {
this.id = id;
this.name = name;
}
public Job() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
集合类型参数请求(指定contentType)
在使用Ajax时我们可以指定contentType为json形式,我们配合@RequestBody注解这样就可以直接接收 而现在我们多用axios,axios中默认就是json形式的所以无需设置 直接使用@RequestBody