Spring.mvc数据绑定可以有多种方法,可以绑定字符串,实体MODEL,日期等。可以绑定集合,JSON字符串,XML等。可以使用PropertyFormatter, Formatter, Converter自定义转换器,进行数据转换
1.基本类型
绑定基本类型
//http://localhost:8092/springtestone/index?skuId=3
@RequestMapping("index")
@ResponseBody
public String Index(Integer skuId)
{
System.out.println(skuId.toString());
return "skuid:"+skuId;
}
2.绑定数组
//http://localhost:8092/springtestone/GetSkuArray?skuname=太阳镜&skuname=短袖&skuname=POLO衫
//数组对象
@RequestMapping("GetSkuArray")
@ResponseBody
public String GetSkuArray(String[] skuname)
{
StringBuilder sb=new StringBuilder();
for(String str:skuname)
{
sb.append(str).append("---");
}
return sb.toString();
//返回值 太阳镜---短袖---POLO衫---
}
3.绑定对象
先建立一个对象
public class SkuDto {
public Integer skuId;
public Integer getSkuId() {
return skuId;
}
public void setSkuId(Integer skuId) {
this.skuId = skuId;
}
public String getSkuName() {
return skuName;
}
public void setSkuName(String skuName) {
this.skuName = skuName;
}
public String getSkuCode() {
return skuCode;
}
public void setSkuCode(String skuCode) {
this.skuCode = skuCode;
}
public String skuName;
public String skuCode;
@Override
public String toString() {
// TODO Auto-generated method stub
return skuId.toString()+"--"+skuName+"--"+skuCode;
}
public Integer num;
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
public Category category;
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
}
//单对象
//http://localhost:8092/springtestone/getskudto?skuId=1&skuCode=0001&skuName=太阳镜
@RequestMapping("getskudto")
@ResponseBody
public String getskudto(SkuDto dto)
{
System.out.println(dto.toString());
return dto.toString();
}
4.绑定多级对象
//获取对象中的对象
//http://localhost:8092/springtestone/getskudto2?skuId=1&skuCode=0001&skuName=太阳镜&category.CategoryName=眼睛&category.Id=1
@RequestMapping("getskudto2")
@ResponseBody
public String getskudto2(SkuDto dto)
{
System.out.println(dto.toString());
return dto.toString()+" "+dto.category.CategoryName;
}
5.绑定多个对象
package dto;
import java.util.List;
public class Category {
public int Id;
public String CategoryName;
public int getId() {
return Id;
}
public void setId(int id) {
Id = id;
}
public String getCategoryName() {
return CategoryName;
}
public void setCategoryName(String categoryName) {
CategoryName = categoryName;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return Id+"--"+CategoryName+"--";
}
public Integer num;
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
/*//分类下的商品集合
public List<skus> skuList;
public List<skus> getSkuList() {
return skuList;
}
public void setSkuList(List<skus> skuList) {
this.skuList = skuList;
}*/
}
@InitBinder("product")
public void InitSkuDto(WebDataBinder binder)
{
binder.setFieldDefaultPrefix("product.");
}
@InitBinder("category")
public void InitCategory(WebDataBinder binder)
{
binder.setFieldDefaultPrefix("category.");
}
//获取多个对象
@RequestMapping("getTwodto")
@ResponseBody
public String getTwodto(Product product,Category category)
{
System.out.println(product.getNum()+" "+category.getNum());
return product.toString()+" :"+category.toString();
}
绑定多级对象的时候要使用InitBinder
6.绑定LIST集合
package dto;
public class User {
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
package dto;
import java.util.List;
public class UserListForm {
private List<User> list;
public List<User> getList() {
return list;
}
public void setList(List<User> list) {
this.list = list;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return list.toString();
}
}
//http://localhost:8092/springtestone/getList?list[0].userName=zhangsan&list[1].userName=眼睛
@RequestMapping("getList")
@ResponseBody
public String getList(UserListForm list)
{
System.out.println(list.getList().size());
return list.toString();
}
7.绑定SET集合
package dto;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
public class UserSetForm {
private Set<User> setUser;
public UserSetForm()
{
setUser=new LinkedHashSet<User>();
setUser.add(new User());
setUser.add(new User());
}
public Set<User> getSetUser() {
return setUser;
}
public void setSetUser(Set<User> setUser) {
this.setUser = setUser;
}
}
@RequestMapping("getSet")
@ResponseBody
public String getSet(UserSetForm list)
{
System.out.print(list.getSetUser().size());
int aa=list.getSetUser().size();
return String.valueOf(aa);
}
8.绑定map集合
import java.util.List;
import java.util.Map;
public class UserMapForm {
private Map<String,User> mapUser;
public Map<String, User> getMapUser() {
return mapUser;
}
public void setMapUser(Map<String, User> mapUser) {
this.mapUser = mapUser;
}
}
//http://localhost:8092/springtestone/getMap?mapUser["a"].userName=zhang&mapUser["b"].userName=李四
@RequestMapping("getMap")
@ResponseBody
public String getMap(UserMapForm mapUser)
{
System.out.print(mapUser.getMapUser().size());
int aa=mapUser.getMapUser().size();
return String.valueOf(aa);
}
9.绑定JSON集合
//http://localhost:8092/springtestone/getJson?{"userName":"zhangsan"}
@RequestMapping("getJson")
@ResponseBody
public String getJson(User user)
{
return user.toString();
}
10.PropertyFormatter
处理日期类型
//http://localhost:8092/springtestone/getDate?date=2016-06-01
@RequestMapping("getDate")
@ResponseBody
public String getDate(Date date)
{
return date.toString();
}
@InitBinder("date")
public void InitDate(WebDataBinder binder)
{
binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
}
11.Formatter
package com.testone.Controller;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import org.springframework.format.Formatter;
public class MyFormater implements Formatter<Date>{
public String print(Date arg0, Locale arg1) {
// TODO Auto-generated method stub
return null;
}
public Date parse(String arg0, Locale arg1) throws ParseException {
// TODO Auto-generated method stub
SimpleDateFormat date=new SimpleDateFormat("yyyy-MM-dd");
return date.parse(arg0);
}
}
添加配置
<mvc:annotation-driven conversion-service="myFormater"/>
<bean id="myFormater" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="formatters">
<set>
<bean class="com.testone.Controller.MyFormater"></bean>
</set>
</property>
</bean>
//http://localhost:8092/springtestone/getDate?date=2016-06-01
@RequestMapping("getDate")
@ResponseBody
public String getDate(Date date)
{
return date.toString();
}
12.Converter
package com.testone.Controller;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.core.convert.converter.Converter;
public class MyConverter implements Converter<String,Date> {
public Date convert(String source) {
// TODO Auto-generated method stub
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
try {
return sdf.parse(source);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
添加配置
<mvc:annotation-driven conversion-service="myFormater"/>
<bean id="myConverter" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.testone.Controller.MyConverter"></bean>
</set>
</property>
</bean>
//http://localhost:8092/springtestone/getDate?date=2016-06-01
@RequestMapping("getDate")
@ResponseBody
public String getDate(Date date)
{
return date.toString();
}