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