Springmvc参数绑定方式很多,本篇将尽可能全的介绍各种参数绑定
1、基本数据类型和引用数据类型
Springmvc内置了许多类型转换器,例如:前端传递字符串后端可以用int类型接收。(推荐使用包装数据类型)
2、默认支持的http对象
HttpServletRequest 通过request对象获取请求信息
HttpServletResponse 通过response处理响应信息
HttpSession 通过session对象得到session中存放的对象
pojo类型
3.1 基本pojo类型
参数较少的时候可以使用简单数据类型,一旦参数过多就可以使用pojo类型接收。参数名一定要和pojo对象属性名一致。
3.2 pojo类型(json)
@RequestMapping(value = "/bindParam",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
@ResponseBody
public JsonFormat bindParam(@RequestBody User user) {
System.out.println(user.getUsername());
return JsonFormat.success("请求成功",null);
}
请求:
绑定数组
可以用String[]接收,或者pojo的String[]属性接收。两种方式都可以
@RequestMapping(value = "/bindParam",method = RequestMethod.POST)
@ResponseBody
public JsonFormat bindParam(User user,String[] ids) {
System.out.println(ids);
return JsonFormat.success("请求成功",null);
}
参数传递:
结果:
4.1 json数组
@RequestMapping(value = "/bindParam",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
@ResponseBody
public JsonFormat bindParam(@RequestBody String[] ids) {
System.out.println(ids);
return JsonFormat.success("请求成功",null);
}
参数传递:
结果:
5、绑定List
5.1基本list集合
创建包装对象,将定义的list集合放进保重对象中,直接绑定list不好使。
public class ParamVo {
private List<User> lists;
public List<User> getLists() {
return lists;
}
public void setLists(List<User> lists) {
this.lists = lists;
}
}
@RequestMapping(value = "/bindParam",method = RequestMethod.POST)
@ResponseBody
public JsonFormat bindParam(ParamVo vo) {
System.out.println(vo.getLists());
return JsonFormat.success("请求成功",null);
}
参数传递:
结果:
5.2json格式list集合
@RequestMapping(value = "/bindParam",method = RequestMethod.POST)
@ResponseBody
public JsonFormat bindParam(@RequestBody ParamVo vo) {
System.out.println(vo.getLists());
return JsonFormat.success("请求成功",null);
}
参数传递:
结果:
绑定map集合
5.1基本map集合
创建包装对象,将定义的map集合放进保重对象中
实体类:
public class ParamVo {
private Map<String,String> maps;
private Map<String,User> userMap;
public Map<String, User> getUserMap() {
return userMap;
}
public void setUserMap(Map<String, User> userMap) {
this.userMap = userMap;
}
public Map<String, String> getMaps() {
return maps;
}
public void setMaps(Map<String, String> maps) {
this.maps = maps;
}
}
主要代码:
@RequestMapping(value = "/bindParam",method = RequestMethod.POST)
@ResponseBody
public JsonFormat bindParam(ParamVo vo) {
Map<String, String> maps = vo.getMaps();
for (Map.Entry<String, String> entry : maps.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
return JsonFormat.success("请求成功",null);
}
传递参数:
结果:
5.2多参数map集合接收
参数较多时,不想创建实体类,那么可以直接使用map接收
@RequestMapping(value = "/bindParam",method = RequestMethod.POST)
@ResponseBody
public JsonFormat bindParam(@RequestParam Map<String,String> map) {
System.out.println(map.get("username"));
return JsonFormat.success("请求成功",null);
}
传递参数:
结果:
5.3 json格式map集合接收
@RequestMapping(value = "/bindParam",method = RequestMethod.POST)
@ResponseBody
public JsonFormat bindParam(@RequestBody Map<String,String> map) {
System.out.println(map.get("username"));
System.out.println(map.get("age"));
return JsonFormat.success("请求成功",null);
}
参数传递:
结果:
json数据交互
@RequestBody:注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容(json数据)转换为java对象并绑定到Controller方法的参数上
@ResponseBody:注解用于将Controller的方法返回的对象(如果返回字符串,则直接将该字符串返回给客户端),通过springmvc提供的HttpMessageConverter接口转换为指定格式的数据如:json,xml等(默认为json),通过Response响应给客户端
示例:
@RequestMapping(value = "/bindParam",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
@ResponseBody
public JsonFormat bindParam(@RequestBody User user) {
System.out.println(user.getUsername());
System.out.println(user.getPassword());
return JsonFormat.success("请求成功",null);
}
传递参数:
结果:
自定义参数绑定
自定义日期格式,需要创建类型转换器
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
try {
// 把字符串转换为日期类型
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
Date date = simpleDateFormat.parse(source);
return date;
} catch (ParseException e) {
e.printStackTrace();
}
// 如果转换异常则返回空
return null;
}
}
在spring配置文件中配置转换器
<!-- 转换器配置 -->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="cn.ceshi.converter.DateConverter" />
</set>
</property>
</bean>
您的赞和关注是对我创作的最大肯定谢谢大家