springmvc 數(shù)據(jù)綁定

  • 基本類型

@ResponseBody
@RequestMapping(value = "/baseType")
public String bastType(@RequestParam(value = "age",required = false,defaultValue = "1") Integer age){
    return "age:"+age;
}

請(qǐng)求: /baseType?age=2
結(jié)果: age:20

  • 數(shù)組

@ResponseBody
@RequestMapping(value = "/array")
public String array(String[] name){
    StringBuilder sb = new StringBuilder();

    for (String str : name) {
        sb.append(str).append(",");
    }
    sb.deleteCharAt(sb.length()-1);
    return sb.toString();
}

請(qǐng)求: /array?name=tom&name=jack&name=jim
結(jié)果: tom,jack,jim

  • 對(duì)象

public class User {
    private String name;
    private Integer age;

    // getter and setter...

    @Override
    public String toString() {
        return "User{" +
            "name='" + name + '\'' +
            ", age=" + age +
            '}';
    }
}
@ResponseBody
@RequestMapping(value = "/object")
public String object(User user) {

    return user.toString();
}

請(qǐng)求: /object?name=jack&age=10
結(jié)果: User{name='jack', age=20}

  • 對(duì)象.對(duì)象

public class User {
    private String name;
    private Integer age;
    private ContactInfo contactInfo;

    // getter and setter...

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", contactInfo=" + contactInfo +
                '}';
    }
}
@ResponseBody
@RequestMapping(value = "/object2")
public String object2(User user) {
    return user.toString();
}

請(qǐng)求: /object2?name=jack&age=20&contactInfo.phone=123456&contactInfo.address=xxxxx
結(jié)果: User{name='jack', age=20, contactInfo=ContactInfo{phone='123456', address='xxxxx'}}

  • 同屬性多對(duì)象

public class Admin {
    private String name;
    private Integer age;

    // getter and setter...

    @Override
    public String toString() {
        return "Admin{" +
            "name='" + name + '\'' +
            ", age=" + age +
            '}';
    }
}
public class User {
    private String name;
    private Integer age;

    // getter and setter

    @Override
    public String toString() {
        return "User{" +
            "name='" + name + '\'' +
            ", age=" + age +
            '}';
    }
}
@ResponseBody
@RequestMapping(value = "/object3")
public String object2(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.");
}

請(qǐng)求: /object3?user.name=jack&age=20&admin.name=tom
結(jié)果: User{name='jack', age=20}Admin{name='tim', age=20}

  • list

import java.util.List;
public class UserListForm {
    private List<User> users ;

    // getter and setter...

    @Override
    public String toString() {
        return "UserListForm{" +
            "users=" + users +
            '}';
    }
}
@ResponseBody
@RequestMapping(value = "/list")
public String list(UserListForm userListForm) {
    return userListForm.toString();
}

請(qǐng)求: /list?users[0].name=111&users[0].age=1&users[1].name=222&users[1].age=2
結(jié)果: UserListForm{users=[User{name='111', age=1, contactInfo=null}, User{name='222', age=2, contactInfo=null}]}
說(shuō)明: users[index] 中index的索引不要跳躍 如果這樣寫/list?users[0].name=111&users[0].age=1&users[3].name=222&users[3].age=2
結(jié)果會(huì)是這樣的:UserListForm{users=[User{name='111', age=1, contactInfo=null}, User{name='null', age=null, contactInfo=null}, User{name='null', age=null, contactInfo=null}, User{name='222', age=2, contactInfo=null}]}
其他方法: 也可以在前端把數(shù)據(jù)組裝成json字符串荆虱,然后傳入待逞,再用工具轉(zhuǎn)化為對(duì)象

  • set

import java.util.LinkedHashSet;
import java.util.Set;
public class UserSetForm {
    //set需要事先初始化一下才行,而且要先設(shè)置好里面的對(duì)象诽凌,也不能索引越界
    private Set<User> users;

    public UserSetForm(){
        users = new LinkedHashSet<>();

        users.add(new User());
        users.add(new User());
    }

    // getter and setter...

    @Override
    public String toString() {
        return "UserSetForm{" +
            "users=" + users +
            '}';
    }
}
@ResponseBody
@RequestMapping(value = "/set")
public String set(UserSetForm userSetForm) {
    return userSetForm.toString();
}

請(qǐng)求: /set?users[0].name=111&users[0].age=1&users[1].name=222&users[1].age=2
結(jié)果: UserSetForm{users=[User{name='111', age=1, contactInfo=null}, User{name='222', age=2, contactInfo=null}]}
說(shuō)明: set需要事先初始化一下才行,而且要先設(shè)置好里面的對(duì)象,也不能索引越界 set用來(lái)去重饵蒂,需要重寫hashCode()equals()方法

  • map

public class UserMapForm {
    private Map<String,User> users;

    //getter and setter

    @Override
    public String toString() {
        return "UserMapForm{" +
                "users=" + users +
                '}';
    }
}
@ResponseBody
@RequestMapping(value = "/map")
public String map(UserMapForm userMapForm) {
    return userMapForm.toString();
}

請(qǐng)求: /map?user[x].name=tom&user[x].age=20&user[y].name=jack&user[y].age=22
結(jié)果: UserMapForm{users={x=User{name='tom', age=20, contactInfo=null}, y=User{name='jack', age=22, contactInfo=null}}}

  • json

/**
 * 需要的jar包
    <dependency>
         <groupId>org.codehaus.jackson</groupId>
         <artifactId>jackson-mapper-asl</artifactId>
         <version>1.9.13</version>
     </dependency>

    request-header   Content-Type:application/json

    data:  
     {
         "name":"aaaa",
         "age":20
     }
 * @param user
 * @return
 */
 @ResponseBody
@RequestMapping(value = "/json")
public String json(@RequestBody User user) {

    return user.toString();
}

請(qǐng)求: localhost:8085/json
結(jié)果: User{name='aaaa', age=20, contactInfo=null}

  • xml

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="admin")
public class Admin {
    private String name;
    private Integer age;
    @XmlElement(name="age")
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @XmlElement(name="name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "Admin{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
/**
 * 所需jar包
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-oxm</artifactId>
         <version>4.3.6.RELEASE</version>
     </dependency>

 request header   Content-Type:application/xml
 data:
     <admin>
         <name>aaa</name>
         <age>20</age>
     </admin>
 * @param admin
 * @return
 */
@ResponseBody
@RequestMapping(value = "/xml")
public String xml(@RequestBody Admin admin) {

    return admin.toString();
}

請(qǐng)求: localhost:8085/xml
結(jié)果: Admin{name='aaa', age=20}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子旁理,更是在濱河造成了極大的恐慌唤衫,老刑警劉巖匾委,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件古拴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡璧帝,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門葵诈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)裸弦,“玉大人,你說(shuō)我怎么就攤上這事作喘±砀恚” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵泞坦,是天一觀的道長(zhǎng)窖贤。 經(jīng)常有香客問(wèn)我,道長(zhǎng)贰锁,這世上最難降的妖魔是什么赃梧? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮豌熄,結(jié)果婚禮上授嘀,老公的妹妹穿的比我還像新娘。我一直安慰自己锣险,他們只是感情好蹄皱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著芯肤,像睡著了一般巷折。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上崖咨,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天锻拘,我揣著相機(jī)與錄音,去河邊找鬼击蹲。 笑死署拟,一個(gè)胖子當(dāng)著我的面吹牛婉宰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播推穷,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼芍阎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了缨恒?” 一聲冷哼從身側(cè)響起谴咸,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎骗露,沒(méi)想到半個(gè)月后岭佳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡萧锉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年珊随,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柿隙。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡叶洞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出禀崖,到底是詐尸還是另有隱情衩辟,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布波附,位于F島的核電站艺晴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏掸屡。R本人自食惡果不足惜封寞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仅财。 院中可真熱鬧狈究,春花似錦、人聲如沸盏求。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)风喇。三九已至宁改,卻和暖如春缕探,著一層夾襖步出監(jiān)牢的瞬間魂莫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工爹耗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耙考,地道東北人谜喊。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像倦始,于是被迫代替她去往敵國(guó)和親斗遏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理鞋邑,服務(wù)發(fā)現(xiàn)诵次,斷路器,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • 這是我在 慕課網(wǎng) 觀看 SpringMVC 數(shù)據(jù)綁定入門 所做的學(xué)習(xí)筆記其中包含對(duì) **List,Set,Map,...
    jnil閱讀 1,214評(píng)論 0 2
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法枚碗,類相關(guān)的語(yǔ)法逾一,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法肮雨,異常的語(yǔ)法遵堵,線程的語(yǔ)...
    子非魚_t_閱讀 31,627評(píng)論 18 399
  • 無(wú)論是servlet自帶的過(guò)濾器還是springMVC的攔截器,都無(wú)法獲取到Controller綁定的數(shù)據(jù)(例如@...
    wYUAN閱讀 213評(píng)論 0 0
  • 秋天真的來(lái)了怨规,廣州早上的溫度居然只有26度陌宿,看到朋友圈都在說(shuō),“早上出門有點(diǎn)涼”波丰,“一出門就趕緊抱緊自己”等等之類...
    Miso來(lái)了閱讀 164評(píng)論 0 0