SpringMVC数据绑定

package com.imooc.controller;

@Controller
public class TestController {

//基本类型数据绑定

在项目的开发中会面临很多的传参,在传参的时候我们要考虑到是使用基本类型还是包装类型,拿int和Integer举例,当我
们在面临age的传参时,如果是基本类型int,那这个key是必须传参数的,不能为Null。如果是包装类型Integer,那这个
key是可以为null的。在项目的开发中应当尽量避免报错,所以在参数类型的选择上应该选择好


//http://localhost:8080/baseType.do?age=1
@RequestMapping(value = "baseType.do")
@ResponseBody
public String baseType(int age){
return "age:"+age;
}

//包装类型数据绑定
//http://localhost:8080/baseType2.do?age=1
@RequestMapping(value = "baseType2.do")
@ResponseBody
public String baseType2(Integer age){
return "age:"+age;
}

//数组类型数据绑定
//http://localhost:8080/array.do?name=zs&name=ls&name=ww
@RequestMapping(value = "array.do")
@ResponseBody
public String Array(String[] name){
StringBuffer sb = new StringBuffer();
for(String item : name){
sb.append(item).append(" ");
}
return sb.toString();
}

//简单对象&多层级对象&同属性对象 数据绑定
// http://localhost:8080/object.do?name=zs&age=123&contactInfo.phone=1234&contactInfo.address=abc
// http://localhost:8080/object.do?user.name=zs&admin.name=ls&age=10
@RequestMapping(value = "object.do")
@ResponseBody
public String object(User user, Admin admin){
return user.toString()+" "+admin.toString();
}
@InitBinder("user")
public void initUser(WebDataBinder binder){
binder.setFieldDefaultPrefix("user.");
}
@InitBinder("admin")
public void initAdmin(WebDataBinder binder){
binder.setFieldDefaultPrefix("admin.");
}

/*
  List的数据绑定
http://localhost:8080/list.do?users[0].name=zs&users[1].name=ls
在传递的时候我们需要保证数组的下标是连续的,否则会造成很多的资源浪费
http://localhost:8080/list.do?users[0].name=zs&users[1].name=ls&users[20].name=ww
*/
@RequestMapping(value = "list.do")
@ResponseBody
public String list(UserListForm userListForm){
return "ListSize:"+userListForm.getUsers().size()+" "+userListForm.toString();
}

  
    /*
Set的数据绑定
   http://localhost:8080/set.do?users[0].name=zs&users[1].name=ls
     Set在数据类型的绑定上与List还是有所区别的,在数据绑定时Set需要初始化,否则会报错NestedServletException;

  初始化Set:
在实际应用中Set主要用于对象的重复判断与排除重复的。要想让他排重需要重新对象的equalshashCode方法

 

 



  */
@RequestMapping(value = "set.do")
@ResponseBody
public String set(UserSetForm userSetForm){
return userSetForm.toString();
}
  




/*
map的数据绑定
http://localhost:8080/map.do?users['user1'].name=zs&users['user1'].age=10&users[''user2'].name=ls
需要注意在key上使用的是单引号(')
*/
@RequestMapping(value = "map.do")
@ResponseBody
public String map(UserMapForm userMapForm){
return userMapForm.toString();
}

/*
Json的数据绑定
在参数上添加上@RequestBody

*/
@RequestMapping(value = "json.do")
@ResponseBody
public String json(@RequestBody User user){
return user.toString();
}
  

 

 




}

 

 

 

 

 

 



posted @ 2021-01-28 11:24  _kerry  阅读(91)  评论(0编辑  收藏  举报