授课老师:张森鹏
重要笔记
1.数组
//数组绑定/arrayType?name=tom&name=lucy
@RequestMapping('/arrayType')
@ResponseBody
public String array(String[] name){
StringBuilder sb=new StringBuilder();
for (String item :name){
sb.append(item).append(' ');
}
return sb.toString();
}
2. 对象
//todo 对象绑定/objectType?name=tom&age=10
//todo 复合对象
///objectType?name=tom&age=10&contactinfo.phone=10086&contactinfo.address=china
//todo 属性的多个对象/objectType?user.name=tom&age=10
@RequestMapping('/objectType')
@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.');
}
3. 集合类型
List
//todo 集合数据绑定
//todo 数据收集对象UserListForm,绑定的是里面的users对象
//todo/list?users[0].name=tom&users[1].name=lucy
// 请求索引要连续,不然会浪费很多空间(空对象)
@RequestMapping(value = '/list')
@ResponseBody
public String list(UserListForm userList){
return userList.toString();
}
Set
//todoset的绑定与list的不同,set要初始化size大小,源码里面会判断index与size关系
// set 主要判断重复,在初始化set对象大小之后,重写hashcode和equals方法,空对象1个,size为1
// /set?users[0].name=tom&users[1].name=lucy
@RequestMapping(value = '/set')
@ResponseBody
public String set(UserSetForm userSet){
return userSet.toString();
}
Map
//todo/map?users[x].name=tom&users[y].name=lucy
@RequestMapping(value = '/map')
@ResponseBody
public String map(UserMapForm userMap){
return userMap.toString();
}
4. Json数据
在maven配置文件中加入jackson-databind的jar包依赖支持对json的解析
//todo json绑定 Content-Type:application/json
// {
// 'name':'tom',
// 'age':10,
// 'contactInfo':{
// 'address':'shenzhen',
// 'phone':10086
// }
//}
@RequestMapping(value = '/json')
@ResponseBody
public String json(@RequestBody User user){
return user.toString();
}
5. XML
//todo xml绑定 需要加入spring-oxm的jar包以及对象添加xml的注解
//Content-Type:application/xml
//
//
// tom
// 10
//
@RequestMapping(value = '/xml')
@ResponseBody
public String xml(@RequestBody Admin admin){
return admin.toString();
}
对Admin类的修改:
package kay.model;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name='admin') //xml根节点
public class Admin{
private String name;
private String age;
@Override
public String toString() {
return 'Admin{' +
'name=' + name +\+
', age=' + age +\+
};
}
@XmlElement(name='name') //xml属性节点
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name='age') //xml属性节点
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}