(1)Get请求:
GET请求一般用去请求获取数据,GET请求也可传参到后台,但是其参数在浏览器的地址栏的url中可见,所以隐私性安全性较差,且参数长度也是有限制的。
GET请求刷新浏览器或回退时没有影响。
GET 请求可被缓存。
GET 请求保留在浏览器历史记录中。
GET请求只能进行url编码(application/x-www-form-urlencoded)。
GET请求比较常见的方式是通过url地址栏请求。
(2)Post请求:
POST一般作为发送数据到后台时使用,POST请求传递参数放在Request body中,不会在url中显示,比GET要安全,且参数长度无限制。
POST回退时会重新提交数据请求。
POST 请求不会被缓存。
POST 请求不会保留在浏览器历史记录中。
POST支持多种编码方式(application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。)。
POST最常见是通过form表单发送数据请求。
(1)普通参数:
// 普通参数
// Tomcat开启 Get请求传参
// http://localhost:8080/User/commonParam?name=黄先生
@RequestMapping("/commonParam")
@ResponseBody
public String commonParam(String name) {
System.out.println("普通参数传递:name:" + name);
return "{'module':'commom param'}";
}
(2)普通参数,请求参数名与形参不同(要用@RequestParam("名称")注解进行配对)
// 普通参数,请求参数名与形参不同
// Tomcat开启 Get请求传参
// http://localhost:8080/User/commonParamDifferentName?username=黄先生
@RequestMapping("/commonParamDifferentName")
@ResponseBody
public String commonParamDifferentName(@RequestParam("username") String name) {
System.out.println("普通参数传递:name:" + name);
return "{'module':'commom param'}";
}
(3)实体类Pojo参数:(前提要有实体类Pojo)
实体类:
控制层类:
// 当实体类Pojo的参数名与传参的参数名一致时,可进行传递
// Tomcat开启 Get请求传参
// http://localhost:8080/User/PojoParam?uid=a003&uname=廖xt&password=1122&gender=女&Flag=北京
@RequestMapping("/PojoParam")
@ResponseBody
public String PojoParam(User user) {
System.out.println("pojo参数传递:user:" + user);
return "{'module':'Pojo param'}";
}
若pojo参数User嵌套pojo参数address作为传参,则可用User中的name,age和嵌套中的address.city,address.province来进行传参。
(4)数组传参:
// 数组传参
// Tomcat开启 Get请求传参
// http://localhost:8080/User/ArrayParam?likes=game&likes=music&likes=travel
@RequestMapping("/ArrayParam")
@ResponseBody
public String ArrayParam(String[] likes) {
System.out.println("Array参数传递:likes:" + Arrays.toString(likes));
return "{'module':'Array param'}";
}
(5)集合传参:
// 集合参数
// Tomcat开启 Get请求传参
// http://localhost:8080/User/ListParam?likes=game&likes=music&likes=travel
// 要在方法的参数加注解@RequestParam才可跳转传参成功 才可识别List集合
@RequestMapping("/ListParam")
@ResponseBody
public String ListParam(@RequestParam List likes) {
System.out.println("List参数传递:likes:" + likes);
return "{'module':'list param'}";
}
Maven导入坐标:
com.fasterxml.jackson.core
jackson-databind
2.12.2
json格式参数传递时要在方法形参前加上@RequestBody注解才能将其识别数据类型,
同时在SpringMvcConfig配置类中要加上@EnableWebMvc,开启由json数据转换为对象的功能才能进行传参成功。
(1)集合参数Json格式
值类型:{"a","b","c"} json格式
(2)Pojo参数:json格式
值类型:
//Pojo参数嵌套Pojo参数
// {
// ”name“:”itcast“,
// ”age“:”15“,
// "address":{
// "city":"北京",
// "province":""beijing
// }
// }
(3)Pojo集合参数:json格式
值类型:
// {
// {"name":"itcast","age":15},
// {"name":"lingnan","age":12}
// }
补充:
// http://localhost:8080/User/dataParam?date=2088/08/08
// 日期型参数可以直接由字符串格式传递
// date=2088/08/08 标签格式,直接传递
// date=2088-08-08 需要在方法的参数前加注解@DateTimeFormat(pattern = "yyyy-MM-dd")才可以传递
// date=2088/08/08 8:08:08 需要在方法的参数前加注解@DateTimeFormat(pattern = "yyyy/MM/dd HH:mm:ss")才可以传递
// 日期参数
// http://localhost:8080/User/dataParam?date=2088-08-08
@RequestMapping("/dataParam")
@ResponseBody
public String dataParam(@DateTimeFormat(pattern = "yyyy-MM-dd") Date date){
System.out.println("参数传递:date:" + date);
return "{'module':'date param'}";
}