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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值