springmvc 參數(shù)綁定

@RequestParam 綁定單個(gè)請求

RequestMapping(value = "/form2")
    @ResponseBody
    public String form2(@RequestParam String name){
        logger.info("name=" + name );
        return "";
    }

@RequestParam 有required(是否必填),defaultValue(默認(rèn)參數(shù))參數(shù)
默認(rèn)required=true,defaultValue為空
如果name參數(shù)不存在則返回400

使用下面這種寫法則required默認(rèn)為false

 @RequestMapping(value = "/form")
    @ResponseBody
    public String form(String name, Integer age) {
        logger.info("name=" + name + "," + "age=" + age);
        return "";
    }

@RequestParam還支持?jǐn)?shù)組形式

@RequestMapping(value = "/names")
    @ResponseBody
    public String names(@RequestParam String[] name) {
        logger.info("name=" + Arrays.asList(name));
        return Arrays.asList(name).toString();
    }

對應(yīng)請求/names.do?name=張三,李四
或者/names.do?name=張三&name=李四

@PathVariable 綁定uri變量值

@RequestMapping("/user/{id}")
    @ResponseBody
    public String getUser(@PathVariable Long id) {
        return String.valueOf(id);
    }

請求/user/1返回id為1

@CookieValue 綁定cookie的值

 @RequestMapping("/getCookie")
    @ResponseBody
    public String getCookie(@CookieValue("JSESSIONID") String sessionId) {
        return sessionId;
    }

@ModelAttribute綁定參數(shù)到命令對象

  1. 綁定請求參數(shù)到對象

先定義兩個(gè)對象
Role

public class Role implements Serializable {

    private String id;
}

User

public class User implements Serializable {

    private String id;

    private Role role;
}
 @RequestMapping("/getUserByModel")
    @ResponseBody
    public String getUserByModel(@ModelAttribute("user") User user) {
        logger.info(user.toString());
        return "";
    }

對應(yīng)請求/getUserByModel.do?id=123&role.id=1

  1. 暴露表單引用對象為模型數(shù)據(jù)
 @ModelAttribute("user")
    public User getUser(String userId) {
        User user = new User();
        user.setId("11");
        Role role=new Role();
        role.setId("123");
        user.setRole(role);
        return user;
    }
    
     @RequestMapping("/getUserModel")
    @ResponseBody
    public String getUserModel(@ModelAttribute User user) {
        return user.toString();
    }

請求/getUserModel?id=1
返回 User{id='1', role=Role{id='123'}}
使用@ModelAttribute注釋的方法會在所有Controller方法前運(yùn)行
因?yàn)橄冗\(yùn)行了@ModelAttribute注解的方法,生成了一個(gè)user對象,之后user對象的id屬性被修改為1

@SessionAttributes綁定命令對象到session

springmvc提供了@SessionAttributes用來對會話數(shù)據(jù)的存取
添加session

 @RequestMapping("/setSession")
    @ResponseBody
    public String setSession(
            HttpSession session) {
        City city = new City();
        city.setCityName("shanghai");
        session.setAttribute("city", city);
        return city.toString();
    }

獲取session數(shù)據(jù)

//在類頭部添加需要的session屬性
@Controller
@SessionAttributes(value = {"city"})
public class TestController {
 @RequestMapping("/getSession")
    @ResponseBody
    public String getSession(@ModelAttribute City city) {
        return city.toString();
    }
}

清除本次會話session

 @RequestMapping("/clearSession")
    @ResponseBody
    public String clearSession(SessionStatus status) {
        status.setComplete();
        return "success";
    }

@RequestBody綁定請求的內(nèi)容區(qū)數(shù)據(jù)并能進(jìn)行自動類型轉(zhuǎn)換等

使用RequestBody可以將json轉(zhuǎn)化為對象

 @RequestMapping("/getUserByJson")
    @ResponseBody
    public String getUserByJson(@RequestBody User user){
        return user.toString();
    }

發(fā)送json格式報(bào)文

{
    "id":"123"
}

返回結(jié)果User{id='123', role=null}

@RequestPart綁定“multipart/data”數(shù)據(jù)

 @RequestMapping("/getFile")
    @ResponseBody
    public String getFile(@RequestPart("image") MultipartFile file){
        System.out.println(file.getName()+","+file.getSize());
        return "success";
    }

源碼地址:https://github.com/lialzmChina/javaeeLearn.git

拓展閱讀
springmvc 參數(shù)綁定源碼分析
springmvc 自定義參數(shù)轉(zhuǎn)換器

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末真慢,一起剝皮案震驚了整個(gè)濱河市裹唆,隨后出現(xiàn)的幾起案子讳窟,更是在濱河造成了極大的恐慌,老刑警劉巖蛔外,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炭菌,死亡現(xiàn)場離奇詭異,居然都是意外死亡痢畜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門鳍侣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丁稀,“玉大人,你說我怎么就攤上這事倚聚∠呱溃” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵惑折,是天一觀的道長授账。 經(jīng)常有香客問我,道長唬复,這世上最難降的妖魔是什么矗积? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮敞咧,結(jié)果婚禮上棘捣,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好乍恐,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布评疗。 她就那樣靜靜地躺著,像睡著了一般茵烈。 火紅的嫁衣襯著肌膚如雪百匆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天呜投,我揣著相機(jī)與錄音加匈,去河邊找鬼茁帽。 笑死壮虫,一個(gè)胖子當(dāng)著我的面吹牛申尼,可吹牛的內(nèi)容都是我干的参淫。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼逆瑞,長吁一口氣:“原來是場噩夢啊……” “哼笨篷!你這毒婦竟也來了斟湃?” 一聲冷哼從身側(cè)響起洒扎,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤辑甜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后袍冷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體磷醋,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年胡诗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了子檀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,673評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乃戈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出亩进,到底是詐尸還是另有隱情症虑,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布归薛,位于F島的核電站谍憔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏主籍。R本人自食惡果不足惜习贫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望千元。 院中可真熱鬧苫昌,春花似錦、人聲如沸幸海。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至袜硫,卻和暖如春氯葬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背婉陷。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工帚称, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秽澳。 一個(gè)月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓闯睹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肝集。 傳聞我的和親對象是個(gè)殘疾皇子瞻坝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評論 2 349

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