天天看点

史上最全的springmvc参数绑定

作者:it村男主任

Springmvc参数绑定方式很多,本篇将尽可能全的介绍各种参数绑定

1、基本数据类型和引用数据类型

史上最全的springmvc参数绑定

Springmvc内置了许多类型转换器,例如:前端传递字符串后端可以用int类型接收。(推荐使用包装数据类型)

2、默认支持的http对象

HttpServletRequest 通过request对象获取请求信息

HttpServletResponse 通过response处理响应信息

HttpSession 通过session对象得到session中存放的对象

史上最全的springmvc参数绑定

pojo类型

3.1 基本pojo类型

参数较少的时候可以使用简单数据类型,一旦参数过多就可以使用pojo类型接收。参数名一定要和pojo对象属性名一致。

史上最全的springmvc参数绑定

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);
}           

请求:

史上最全的springmvc参数绑定

绑定数组

可以用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);
}           

参数传递:

史上最全的springmvc参数绑定

结果:

史上最全的springmvc参数绑定

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);
}           

参数传递:

史上最全的springmvc参数绑定

结果:

史上最全的springmvc参数绑定

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);
}           

参数传递:

史上最全的springmvc参数绑定

结果:

史上最全的springmvc参数绑定

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);
}           

参数传递:

史上最全的springmvc参数绑定

结果:

史上最全的springmvc参数绑定

绑定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);
}           

传递参数:

史上最全的springmvc参数绑定

结果:

史上最全的springmvc参数绑定

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);
}           

传递参数:

史上最全的springmvc参数绑定

结果:

史上最全的springmvc参数绑定

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);
}           

参数传递:

史上最全的springmvc参数绑定

结果:

史上最全的springmvc参数绑定

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);
}           

传递参数:

史上最全的springmvc参数绑定

结果:

史上最全的springmvc参数绑定

自定义参数绑定

自定义日期格式,需要创建类型转换器

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>           

您的赞和关注是对我创作的最大肯定谢谢大家