Spring Mvc那点事---(17)Spring Mvc之数据绑定

来源:互联网 发布:sql把重复数据删除 编辑:程序博客网 时间:2024/06/05 00:08

        Spring.mvc数据绑定可以有多种方法,可以绑定字符串,实体MODEL,日期等。可以绑定集合,JSON字符串,XML等。可以使用PropertyFormatter, Formatter, Converter自定义转换器,进行数据转换

1.基本类型

          绑定基本类型     

//http://localhost:8092/springtestone/index?skuId=3@RequestMapping("index")@ResponseBodypublic String Index(Integer skuId){System.out.println(skuId.toString());return "skuid:"+skuId;}
 2.绑定数组

       

//http://localhost:8092/springtestone/GetSkuArray?skuname=太阳镜&skuname=短袖&skuname=POLO衫//数组对象@RequestMapping("GetSkuArray")@ResponseBodypublic 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;@Overridepublic String toString() {// TODO Auto-generated method stubreturn 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")@ResponseBodypublic 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")@ResponseBodypublic 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;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn 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")@ResponseBodypublic 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;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn list.toString();}}
//http://localhost:8092/springtestone/getList?list[0].userName=zhangsan&list[1].userName=眼睛@RequestMapping("getList")@ResponseBodypublic 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")@ResponseBodypublic 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")@ResponseBodypublic 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")@ResponseBodypublic String getJson(User user){return user.toString();}

10.PropertyFormatter

   处理日期类型

   

//http://localhost:8092/springtestone/getDate?date=2016-06-01@RequestMapping("getDate")@ResponseBodypublic 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 stubreturn null;}public Date parse(String arg0, Locale arg1) throws ParseException {// TODO Auto-generated method stubSimpleDateFormat 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")@ResponseBodypublic 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 stubSimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");try {return sdf.parse(source);} catch (ParseException e) {// TODO Auto-generated catch blocke.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")@ResponseBodypublic String getDate(Date date){return date.toString();}


0 0
原创粉丝点击