建设微信商城网站制作,众筹网站搭建,做外贸网站卖什么东西好,企业策划书目录通常情况下#xff0c;我们可以使用GET或POST来发送请求和数据#xff0c;但GET和POST两种方法所携带的数据都是比较简单的数据#xff0c;接下来在我们这个基础上#xff0c;列举5种比较负责的参数传递方法#xff0c;并对这些参数如何发送#xff0c;后台改如何接收做详…通常情况下我们可以使用GET或POST来发送请求和数据但GET和POST两种方法所携带的数据都是比较简单的数据接下来在我们这个基础上列举5种比较负责的参数传递方法并对这些参数如何发送后台改如何接收做详细的讲解。
常见的参数种类有: ·普通参数 ·POJO类型参数 ·嵌套POJO类型参数 ·数组类型参数 ·集合类型参数
普通参数
普通参数:url地址传参地址参数名与形参变量名相同定义形参即可接收参数。 如果形参与地址参数名不一致该如何解决呢?
发送请求与参数示例代码如下
http://localhost/commonParamDifferentName?name张三age18
后台接收参数:
RequestMapping(/commonParamDifferentName)
ResponseBody
public String commonParamDifferentName(String userName, int age) {System.out.println(普通参数传递 userName userName);System.out.println(普通参数传递 age age);return {module:common param different name};
}
因为前端给的是name ,后台接收使用的是userName ,两个名称对不上导致接收数据失败: 使用RequestParam注解可以避免接受数据失败。
RequestMapping(/commonParamDifferentName)ResponseBodypublic String commonParamDifferentName(RequestPaam(name) String
userName, int age) {System.out.println(普通参数传递 userName userName);System.out.println(普通参数传递 age age);return {module:common param different name};
}
注意:写上RequestParam注解框架就不需要自己去解析注入能提升框架处理性能。
POJO数据类型
简单数据类型一般处理的是参数个数比较少的请求如果参数比较多那么后台接收参数的时候就比较复杂这个时候我们可以考虑使用POJO数据类型。
POJO参数请求参数名与形参对象属性名相同定义POJO类型形参即可接收参数此时需要使用前面准备好的POJO类先来看下User
public class User {private String name;private int age;//setter...getter...略
}
发送请求和参数: 后台接收参数:
//POJO参数请求参数与形参对象中的属性对应即可完成参数传递
RequestMapping(/pojoParam)
ResponseBody
public String pojoParam(User user){System.out.println(pojo参数传递 user user);return {module:pojo param};
}
注意:
POJO参数接收前端GET和POST发送请求数据的方式不变。 请求参数key的名称要和POJO中属性的名称一致否则无法封装。
嵌套POJO类型参数
如果POJO对象中嵌套了其他的POJO类如
public class Address {private String province;private String city;//setter...getter...略
}
public class User {private String name;private int age;private Address address;//setter...getter...略
}
嵌套POJO参数请求参数名与形参对象属性名相同按照对象层次结构关系即可接收嵌套POJO属性参数发送请求和参数: 后台接收参数:
//POJO参数请求参数与形参对象中的属性对应即可完成参数传递
RequestMapping(/pojoParam)
ResponseBody
public String pojoParam(User user){System.out.println(pojo参数传递 user user);return {module:pojo param};
}
注意:
请求参数key的名称要和POJO中属性的名称一致否则无法封装。
数组类型参数
举个简单的例子如果前端需要获取用户的爱好爱好绝大多数情况下都是多个如何发送请求数据和接收数据呢?
数组参数请求参数名与形参对象属性名相同且请求参数为多个定义数组类型即可接收参数发送请求和参数的示例代码如下: 后台接收参数:
//数组参数同名请求参数可以直接映射到对应名称的形参数组对象中RequestMapping(/arrayParam)ResponseBodypublic String arrayParam(String[] likes) {System.out.println(数组参数传递 likes Arrays.toString(likes));return {module:array param};
}
集合类型参数
数组能接收多个值那么集合是否也可以实现这个功能呢? 发送请求和参数: 后台接收参数
//集合参数同名请求参数可以使用RequestParam注解映射到对应名称的集合对象中作为数据
RequestMapping(/listParam)
ResponseBody
public String listParam(List String likes) {System.out.println(集合参数传递 likes likes);return {module:list param};
}
运行会报错 错误的原因是:SpringMVC将List看做是一个POJO对象来处理将其创建一个对象并准备把前端的数 据封装到对象中但是List是一个接口无法创建对象所以报错。 解决方案是:使用RequestParam注解
//集合参数同名请求参数可以使用RequestParam注解映射到对应名称的集合对象中作为数据
RequestMapping(/listParam)
ResponseBody
public String listParam(RequestParam List String likes) {System.out.println(集合参数传递 likes likes);return {module:list param};
}
集合保存普通参数请求参数名与形参集合对象名相同且请求参数为多个RequestParam绑定参数关系。对于简单数据类型使用数组会比集合更简单些。