SSM系列——SpringMVC请求数据day3-3

367 阅读3分钟

SSM系列——SpringMVC请求数据

SpringMVC请求参数

一般我们有:

  1. 基本类型参数
  2. POJO类型参数
  3. 数组类型参数
  4. 集合类型参数

Http请求方式

方法说明
get请求指定的页面信息,并返回实体主体
post向指定资源提交数据进行处理请求(例如提交表单或上传文件)。数据被包含在请求体中,POST请求可能会导致新的资源建立或已有资源修改
head类似于GET请求,只不过返回的响应中没有具体内容,用于获取报头
options允许客户端查看服务器的内容
put从客户端向服务器传送的数据取代指定的文档内容
delete请求服务器删除指定页面
trace回显服务器收到的请求,主要用于测试或诊断
connectHTTP/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