摘要:常用客戶端參數(shù)接收方式在結(jié)構(gòu)中,控制器組件主要的功能就是接收請(qǐng)求處理請(qǐng)求生成響應(yīng),接收客戶端傳來(lái)的請(qǐng)求參數(shù)的往往是控制器要做的第一件事。當(dāng)使用注解時(shí),設(shè)置客戶端傳遞的請(qǐng)求參數(shù)和的值相匹配后,參數(shù)名可以和請(qǐng)求參數(shù)不匹配。
Spring MVC常用客戶端參數(shù)接收方式
在MVC結(jié)構(gòu)中,控制器組件主要的功能就是接收請(qǐng)求、處理請(qǐng)求、生成響應(yīng),接收客戶端傳來(lái)的請(qǐng)求參數(shù)的往往是控制器要做的第一件事。
Book實(shí)體類Book.java
public class Book { private Integer bookId; private String author; //生成Get、Set方法,此處省略 }一、直接用參數(shù)名匹配請(qǐng)求參數(shù)
客戶端界面(表單):
controller層:
@Controller public class ParamPassDemo { @RequestMapping(value="/queryString") public String test1(Integer bookId, String author) { System.out.println("bookId="+bookId+", author="+author); //此處返回的地址為(/WEB-INF/jsp/index.jsp) return "index"; } }
注意:這里@RequestMapping中只有value屬性,value可以省略不寫(xiě)。
客戶端輸入:123,Rose
控制臺(tái)輸出:bookId=123, author=Rose
二、通過(guò)@RequestParam注解來(lái)指定請(qǐng)求參數(shù)的name客戶端界面(表單):
如果表單中的字段與方法中的參數(shù)名一致,可以不需要@RequestParam,Spring會(huì)自動(dòng)處理。
controller層:
@Controller public class ParamPassDemo { @RequestMapping("/queryStringWithSpecName") public String test2(@RequestParam(value="bookId",required=false) Integer id, @RequestParam("author") String name) { System.out.println("bookId="+id+", author="+name); return "index"; } }
注意:這里@RequestParam中有兩個(gè)屬性,value不能省略。
@RequestParam將請(qǐng)求地址中的參數(shù)傳遞給目標(biāo)方法,在處理方法入?yún)⑻幨褂每梢园颜?qǐng)求參數(shù)傳遞給請(qǐng)求方法。
當(dāng)使用@RequestParam注解時(shí),設(shè)置客戶端傳遞的請(qǐng)求參數(shù)name="bookId"和@RequestParam的value值value="bookId"相匹配后,參數(shù)名int id可以和請(qǐng)求參數(shù)不匹配。
客戶端輸入:321, Jack
控制臺(tái)輸出:bookId=321, author=Jack
客戶端界面(ajax):
controller層:(不變)
客戶端: data:{"author" : "Jack"}
控制臺(tái)輸出: bookId=null, author=Jack(如果bookId為int類型,控制臺(tái)會(huì)拋出異常)
客戶端: data:{"bookId" : 1}
控制臺(tái)輸出: org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter "author" is not present
通過(guò)required設(shè)置可選參數(shù),required為false時(shí)表示可以不帶參數(shù),為true時(shí)表示必須帶參數(shù)(默認(rèn)值為true)。
當(dāng)可選參數(shù)不存在時(shí),Spring默認(rèn)將其賦值為空(null),但由于bookId已定義為基本類型int,所以賦值會(huì)失敗。解決方法:采用int包裝類Integer。三、使用領(lǐng)域?qū)ο髞?lái)接收參數(shù)
客戶端界面(表單):
controller層:
@Controller public class ParamPassDemo { @RequestMapping("/queryStringWithDomainObj") public String test3(Book book) { System.out.println("bookId="+book.getBookId()+", author="+book.getAuthor()); return "index"; } }
客戶端輸入:111, Bob
控制臺(tái)輸出:bookId=111, author=Bob
四、URL動(dòng)態(tài)參數(shù)傳遞(路徑參數(shù))客戶端界面(超鏈接):
testPathVariable
controller層:
@Controller public class ParamPassDemo { //@PathVariable可以用來(lái)映射URL中的占位符到目標(biāo)方法的參數(shù)中 @RequestMapping("/book/{bookId}") public String test4(@PathVariable("bookId") Integer bookId) { System.out.println("bookId:" + bookId); return "index"; } }
控制臺(tái)輸出:bookId:1
@PathVariable 映射 URL 綁定的占位符
通過(guò) @PathVariable 可以將 URL 中占位符參數(shù)綁定到控制器處理方法的入?yún)⒅校篣RL 中的 {xxx} 占位符可以通過(guò)@PathVariable(“xxx“) 綁定到操作方法的入?yún)⒅小?/pre> 五、使用HttpServletRequest獲取請(qǐng)求參數(shù)客戶端界面(表單):
controller層:
@Controller public class ParamPassDemo { @RequestMapping("/queryBook") public String test5(HttpServletRequest request) { System.out.println("bookId:" + request.getParameter("bookId")); //此處index.jsp界面在WEB-INF下 return "redirect:/index.jsp"; } }
客戶端輸入:123
控制臺(tái)輸出:用戶id:123
六、跳轉(zhuǎn)到另一個(gè)controller方法客戶端界面(url地址欄):
http://localhost:8080/test6?bookId=321
controller層:
@Controller public class ParamPassDemo { @RequestMapping("/test6") public String test6(String bookId){ System.out.println("bookId="+bookId); //使用服務(wù)端跳轉(zhuǎn)的方式轉(zhuǎn)向到另一個(gè)controller //return "forward:queryBook?bookId="+bookId; return "redirect:queryUser?bookId="+bookId; } }
控制臺(tái)輸出:bookId=321 bookId:321
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/73441.html
摘要:是一個(gè)基于的框架??刂破鲗⒁晥D響應(yīng)給用戶通過(guò)視圖展示給用戶要的數(shù)據(jù)或處理結(jié)果。有了減少了其它組件之間的耦合度。 相關(guān)閱讀: 本文檔和項(xiàng)目代碼地址:https://github.com/zhisheng17/springmvc 轉(zhuǎn)載請(qǐng)注明出處和保留以上文字! 了解 Spring: Spring 官網(wǎng):http://spring.io/ 一個(gè)好的東西一般都會(huì)有一個(gè)好的文檔解釋說(shuō)明,如果你...
摘要:客戶端提交阻止默認(rèn)事件得到搜索框數(shù)據(jù)值轉(zhuǎn)為的方法失敗啦當(dāng)前請(qǐng)求方式為控制臺(tái)輸出當(dāng)前請(qǐng)求方式為客戶端彈窗三以方式接收以數(shù)組形式傳遞客戶端失敗啦注意傳遞到后端時(shí)應(yīng)為的格式數(shù)據(jù),否則可能會(huì)出現(xiàn)錯(cuò)誤。 前后端的數(shù)據(jù)交互,除了通過(guò)form表單進(jìn)行提交外,也可以通過(guò)ajax向后端傳遞和接收json格式數(shù)據(jù)(這種方式可以實(shí)現(xiàn)請(qǐng)求數(shù)據(jù)和頁(yè)面分離)。本文將總結(jié)一下在Spring MVC中接收和響應(yīng)jso...
摘要:請(qǐng)求旅程的第一站是的。的任務(wù)是將請(qǐng)求發(fā)送控制器控制器是一個(gè)用于處理請(qǐng)求的組件。處理映射器根據(jù)請(qǐng)求攜帶的信息來(lái)進(jìn)行決策。這樣的結(jié)果就是,只能找到顯示聲明在配置類中的控制器。 構(gòu)建Spring Web應(yīng)用 說(shuō)明 如果你有幸能看到。 1、本文參考了《Spring 實(shí)戰(zhàn)》重點(diǎn)內(nèi)容,參考了GitHub上的代碼 2、本文只為記錄作為以后參考,要想真正領(lǐng)悟Spring的強(qiáng)大,請(qǐng)看原書(shū)。 3、在一次...
摘要:初步使用幾種傳參方式本次沿用上次的工程,在中添加幾個(gè)方法創(chuàng)建模型修改直接把表單參數(shù)寫(xiě)入的相應(yīng)方法中通過(guò)來(lái)接收通過(guò)來(lái)接收通過(guò)接收用注解綁定請(qǐng)求參數(shù)測(cè)試接口測(cè)試使用的是火狐的插件,使用類似的工具也可以,或者寫(xiě)一個(gè)表單,這里不在多解釋可以看到請(qǐng)求 Spring MVC初步使用 Spring MVC 幾種傳參方式 本次沿用上次的工程,在controller中添加幾個(gè)方法 創(chuàng)建User模型 pu...
閱讀 2623·2021-11-24 09:39
閱讀 3319·2021-10-09 09:53
閱讀 1199·2021-09-22 16:06
閱讀 4565·2021-09-02 10:18
閱讀 883·2021-08-23 09:42
閱讀 1853·2021-08-17 10:11
閱讀 2755·2019-08-30 13:02
閱讀 2180·2019-08-30 12:49