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
- Spring Mvc那点事---(17)Spring Mvc之数据绑定
- Spring Mvc那点事---(25)Spring Mvc监听器绑定session对象状态
- Spring Mvc那点事---(3)Spring Mvc项目创建
- Spring Mvc那点事---(4)Spring Mvc控制器Controller
- Spring Mvc那点事---(7)Spring Mvc @Autowired注解
- Spring Mvc那点事---(8)Spring Mvc @Resource注解
- Spring Mvc那点事---(9)Spring Mvc @Component注解
- Spring Mvc那点事---(18)Spring Mvc过滤器Filter
- Spring Mvc那点事---(21)Spring Mvc拦截器
- Spring Mvc那点事---(23)Spring Mvc监听器
- spring mvc数据绑定
- spring mvc数据绑定
- spring mvc数据绑定
- Spring MVC 数据绑定
- Spring MVC-数据绑定
- Spring Mvc那点事---(10)Spring Mvc之mybatis用法
- Spring Mvc那点事---(11)Spring Mvc之mybatis增删改查
- Spring Mvc那点事---(12)Spring Mvc之mybatis使用注解进行增删改查
- crond命令
- 华为 hg8245c 超级密码
- 《三重门》作者的机灵与人物的笨拙
- 基于ENVI下的土地利用信息提取(三)
- APIO2016 题解
- Spring Mvc那点事---(17)Spring Mvc之数据绑定
- LPC1768 IAP升级
- iOS获取手势的tag
- 简单工厂VS工厂方法VS抽象工厂
- 十三.通过pagination对页面进行分页
- ArrayList简介
- 【造轮子系列】一个选择星期的工具——SweepSelect View
- 解决ExpandableListView的OnItemLongClickListener无法准确获取position的问题
- Python爬虫入门一