springmvc 參數(shù)綁定總結(jié)
最近在學(xué)習(xí)springmvc,今天把springmvc 參數(shù)綁定給整理一下,也算個(gè)學(xué)習(xí)筆記吧!
@RequestParam 綁定單個(gè)請(qǐng)求
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(); }
對(duì)應(yīng)請(qǐng)求/names.do?name=張三,李四
或者/names.do?name=張三&name=李四
@PathVariable 綁定uri變量值
@RequestMapping("/user/{id}") @ResponseBody public String getUser(@PathVariable Long id) { return String.valueOf(id); }
請(qǐng)求/user/1返回id為1
@CookieValue 綁定cookie的值
@RequestMapping("/getCookie") @ResponseBody public String getCookie(@CookieValue("JSESSIONID") String sessionId) { return sessionId; }
@ModelAttribute綁定參數(shù)到命令對(duì)象
1、綁定請(qǐng)求參數(shù)到對(duì)象
先定義兩個(gè)對(duì)象
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 ""; }
對(duì)應(yīng)請(qǐng)求/getUserByModel.do?id=123&role.id=1
暴露表單引用對(duì)象為模型數(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(); }
請(qǐng)求/getUserModel?id=1
返回 User{id='1', role=Role{id='123'}}
使用@ModelAttribute注釋的方法會(huì)在所有Controller方法前運(yùn)行
因?yàn)橄冗\(yùn)行了@ModelAttribute注解的方法,生成了一個(gè)user對(duì)象,之后user對(duì)象的id屬性被修改為1
@SessionAttributes綁定命令對(duì)象到session
springmvc提供了@SessionAttributes用來對(duì)會(huì)話數(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(); } }
清除本次會(huì)話session
@RequestMapping("/clearSession") @ResponseBody public String clearSession(SessionStatus status) { status.setComplete(); return "success"; }
@RequestBody綁定請(qǐng)求的內(nèi)容區(qū)數(shù)據(jù)并能進(jìn)行自動(dòng)類型轉(zhuǎn)換等
使用RequestBody可以將json轉(zhuǎn)化為對(duì)象
@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"; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
springboot中swagger、異步/定時(shí)/郵件任務(wù)的問題
這篇文章主要介紹了springboot中swagger、異步/定時(shí)/郵件任務(wù)的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07Java實(shí)現(xiàn)的文件過濾代碼分享(按后輟過濾)
這篇文章主要介紹了Java實(shí)現(xiàn)的文件過濾代碼分享,本文通過后輟名過濾,代碼寫簡(jiǎn)潔,容易看懂,需要的朋友可以參考下2014-07-07基于rabbitmq延遲插件實(shí)現(xiàn)分布式延遲任務(wù)
這篇文章主要介紹了基于rabbitmq延遲插件實(shí)現(xiàn)分布式延遲任務(wù),今天我們講解延遲隊(duì)列的實(shí)現(xiàn)方式,而延遲隊(duì)列有很多種實(shí)現(xiàn)方式,今天就每種實(shí)現(xiàn)方式給大家大概介紹下,感興趣的朋友一起看看吧2022-01-01java中樂觀鎖與悲觀鎖區(qū)別及使用場(chǎng)景分析
本文主要介紹了java中樂觀鎖與悲觀鎖區(qū)別及使用場(chǎng)景分析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08java動(dòng)態(tài)綁定和靜態(tài)綁定用法實(shí)例詳解
這篇文章主要介紹了java動(dòng)態(tài)綁定和靜態(tài)綁定用法,結(jié)合實(shí)例形式詳細(xì)分析了java動(dòng)態(tài)綁定與靜態(tài)綁定相關(guān)概念、原理、實(shí)現(xiàn)方法及使用注意事項(xiàng),需要的朋友可以參考下2019-05-05java 實(shí)現(xiàn)圖片圓角處理、背景透明化
這篇文章主要介紹了java 實(shí)現(xiàn)圖片圓角處理、背景透明化,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11