SpringMVC数据传递总结

1. 分析总结

 1.1 普通格式数据处理总结:
 a. 注入数据时需要保证前端传递的参数名称和后端接收方法形参名称需要对应
 b. 对于名称不对应借用@RequestParam进行映射对应
 c. 对于集合类需要使用@RequestParam进行声明

 @RequstMapping可以对get和post请求同时处理,get只接收请求行数据,post会同时接收请求行与请求体当中的数据

 1.2 Json格式数据处理:
 a. 前期准备:jar包导入 + 注解开启
 b. 支持get和post请求
 c. 必须加上@RequestBody注解(使用请求体进行参数传递)

2. 普通格式数据

2.1 普通参数

 @RequestMapping可以处理get和post请求,默认参数名称需要对应,若不对应则需要使用@RequestParam进行参数绑定
  请求参数格式(参数在请求体和请求行当中都设置分析):
在这里插入图片描述
 Java表现层代码:

package com.controller;
import org.springframework.web.bind.annotation.*;

@RestController
public class BookControllerTest {
    
    
	// 普通参数 -- get请求(只会接收请求行当中参数)
	@RequestMapping("/getCommonParam")
	public String getCommonParam(String username, String password){
    
    
		System.out.println("=========================================");
		System.out.println("普通参数 -- get请求(只会接收请求行当中参数)");
		System.out.println("username => " + username);
		System.out.println("password => " + password);
		return "Get请求成功接收普通参数传递";
	}

	// 普通参数 -- post请求(会同时接收请求行与请求头当中数据, 建议数据规范写入到请求头当中)
	@RequestMapping("/postCommonParam")
	public String postCommonParam(String username, String password){
    
    
		System.out.println("=========================================");
		System.out.println("普通参数 -- post请求(会同时接收请求行与请求体当中数据, 建议数据规范写入到请求体当中)");
		System.out.println("username => " + username);
		System.out.println("password => " + password);
		return "Post请求成功接收普通参数传递";
	}

	// 使用@RequestParam 可以解决请求参数与方法形参名字不对应问题
	@RequestMapping("/solveDifferentName")
	public String solveDifferentName(@RequestParam("username") String name, String password){
    
    
		System.out.println("=========================================");
		System.out.println("使用@RequestParam 可以解决参数名字不对应的问题");
		System.out.println("name => " + name);
		System.out.println("password => " + password);
		return "请求成功解决参数名称不对应";
	}
}

 数据结果:
在这里插入图片描述

2.2 pojo参数

 @RequestMapping可以处理get和post请求,默认参数名称和属性名需要对应
  请求参数格式(参数在请求体和请求行当中都进行设置):
在这里插入图片描述

 Java表现层代码:

package com.controller;

public class User {
    
    
	String password;
	String username;
	String s;

	public String getPassword() {
    
     return password; }
	public void setPassword(String password) {
    
     this.password = password; }
	public String getUsername() {
    
     return username; }
	public void setUsername(String username) {
    
     this.username = username; }
	public String getS() {
    
     return s; }
	public void setS(String s) {
    
     this.s = s; }

	@Override
	public String toString() {
    
    
		return "User{" +
				"password='" + password + '\'' +
				", username='" + username + '\'' +
				", s='" + s + '\'' +
				'}';
	}
}

package com.controller;
import org.springframework.web.bind.annotation.*;

@RestController
public class BookControllerTest {
    
    

	@RequestMapping("/getPojo")
	public String getCommonParam(User user){
    
    
		System.out.println("=========================================");
		System.out.println("pojo参数 -- get请求(参数需要与pojo当中属性名称对应)(只接收请求行)");
		System.out.println("user => " + user);
		return "Successful";
	}

	@RequestMapping("/postPojo")
	public String postCommonParam(User user){
    
    
		System.out.println("=========================================");
		System.out.println("pojo参数 -- post请求(参数需要与pojo当中属性名称对应)(接收请求行与请求体)");
		System.out.println("user => " + user);
		return "Successful";
	}

}

 数据结果:
在这里插入图片描述

2.3 嵌套pojo参数

 此问题的关键就是需要在前端传递参数的时候同时需要请求参数名与对象属性名相同,再按照对象层次关系进行接收

package com.controller;
class Address{
    
    
	private int id;
	private String name;
	/*
	此处省略get/set/toString()方法
	 */
}
public class User {
    
    
	String password;
	String username;
	private Address address;
	/*
	此处省略get/set/toString()方法
	 */
}

在这里插入图片描述

2.4 数组 – 普通参数

 @RequestMapping可以处理get和post请求,请求参数名称和形参需要对应,对应内容可以成功注入。与之前类似若请求为post,但是在请求体当中也写入了数据,post请求会将这两部分数据全部接收

  请求参数格式(参数在请求体和请求行当中都进行设置):
在这里插入图片描述

 Java表现层代码:

package com.controller;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;

@RestController
public class BookControllerTest {
    
    

	@RequestMapping("/getArray")
	public String getArray(String username[]){
    
    
		System.out.println("=========================================");
		System.out.println("get方式 -- 数组 -- 普通参数: 保证请求参数与方法形参名字对应即可成功注入");
		System.out.println("username =>" + Arrays.toString(username));
		return "Successful";
	}

	@RequestMapping("/postArray")
	public String postArray(String username[]){
    
    
		System.out.println("=========================================");
		System.out.println("post方式 -- 数组 -- 普通参数: 保证请求参数与方法形参名字对应即可成功注入");
		System.out.println("username =>" + Arrays.toString(username));
		return "Successful";
	}
}

 数据结果:
在这里插入图片描述

2.5 集合 – 普通参数

 这里需要注意,需要使用@RequestParam将参数进行绑定,因为其默认操作会首先进行创建对象,再将值放入对象的属性当中,而List是接口,需要使用@RequstParam进行声明将值直接放入到LIst集合当中
在这里插入图片描述

  请求参数格式(参数在请求体和请求行当中都进行设置):
在这里插入图片描述

 Java表现层代码

package com.controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
public class BookControllerTest {
    
    

	@RequestMapping("/getList")
	public String getList(@RequestParam List<String> username){
    
    
		System.out.println("=========================================");
		System.out.println("get方式 -- List集合 -- 普通参数: 保证请求参数与方法形参名字对应即可成功注入");
		System.out.println("username =>" + username);
		return "Successful";
	}

	@RequestMapping("/postList")
	public String postList(@RequestParam List<String> username){
    
    
		System.out.println("=========================================");
		System.out.println("post方式 -- List集合 -- 普通参数: 保证请求参数与方法形参名字对应即可成功注入(处理请求体与请求行)");
		System.out.println("username =>" + username);
		return "Successful";
	}
}

 数据结果
在这里插入图片描述

2.6 web容器添加过滤器指定字符集

在这里插入图片描述

3. JSON格式数据

3.1 相关准备

  jackson数据转换jar包(Maven依赖)

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.0</version>
</dependency>

  核心注解: @EnableMvc开启Json数据转换支持
在这里插入图片描述

3.2 json数组(基本)

 Json数据传递使用get或者post请求都可以,因为信息设置在请求体当中所以对于所有Json数据的传递都需要加上@RequestBody注解
 Postman请求格式:
在这里插入图片描述
 Java表现层代码:

package com.controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
public class BookControllerTest {
    
    

	@RequestMapping("/getJson")
	public void getJson(@RequestBody List<String> username){
    
    
		System.out.println("============================");
		System.out.println("Json数据可以使用get传递.....");
		System.out.println(username);
	}

	@PostMapping("/postJson")
	public void postJson(@RequestBody List<String> username){
    
    
		System.out.println("===========================");
		System.out.println("Json数据可以使用post传递.....");
		System.out.println(username);
	}

}

 数据结果:
在这里插入图片描述

3.3 json对象(pojo)

 关键:使用@RequestBody注解(参数名称和属性对应)
 Postman请求格式:
在这里插入图片描述
 Java表现层代码:

package com.controller;
import org.springframework.web.bind.annotation.*;

@RestController
public class BookControllerTest {
    
    

	@RequestMapping("/getJsonPojo")
	public void getJsonPojo(@RequestBody User user){
    
    
		System.out.println("============================");
		System.out.println("Json对象(pojo)成功传递.....");
		System.out.println(user);
	}
}

 数据结果:
在这里插入图片描述

3.4 json数组(pojo)

 关键:使用@RequestBody注解(参数名称和属性对应)
 Postman请求格式:
在这里插入图片描述

 Java表现层代码:

package com.controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class BookControllerTest {
    
    

	@RequestMapping("/getJsonPojoList")
	public void getJsonPojoList(@RequestBody List<User> users){
    
    
		System.out.println("============================");
		System.out.println("Json对象(pojo)成功传递.....");
		System.out.println(users);
	}
}

 数据结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_51566349/article/details/131570271