摘要:常用客戶端參數接收方式在結構中,控制器組件主要的功能就是接收請求處理請求生成響應,接收客戶端傳來的請求參數的往往是控制器要做的第一件事。當使用注解時,設置客戶端傳遞的請求參數和的值相匹配后,參數名可以和請求參數不匹配。
Spring MVC常用客戶端參數接收方式
在MVC結構中,控制器組件主要的功能就是接收請求、處理請求、生成響應,接收客戶端傳來的請求參數的往往是控制器要做的第一件事。
Book實體類Book.java
public class Book { private Integer bookId; private String author; //生成Get、Set方法,此處省略 }一、直接用參數名匹配請求參數
客戶端界面(表單):
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注解來指定請求參數的name客戶端界面(表單):
如果表單中的字段與方法中的參數名一致,可以不需要@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將請求地址中的參數傳遞給目標方法,在處理方法入參處使用可以把請求參數傳遞給請求方法。
當使用@RequestParam注解時,設置客戶端傳遞的請求參數name="bookId"和@RequestParam的value值value="bookId"相匹配后,參數名int id可以和請求參數不匹配。
客戶端輸入: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設置可選參數,required為false時表示可以不帶參數,為true時表示必須帶參數(默認值為true)。
當可選參數不存在時,Spring默認將其賦值為空(null),但由于bookId已定義為基本類型int,所以賦值會失敗。解決方法:采用int包裝類Integer。三、使用領域對象來接收參數
客戶端界面(表單):
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動態參數傳遞(路徑參數)客戶端界面(超鏈接):
testPathVariable
controller層:
@Controller public class ParamPassDemo { //@PathVariable可以用來映射URL中的占位符到目標方法的參數中 @RequestMapping("/book/{bookId}") public String test4(@PathVariable("bookId") Integer bookId) { System.out.println("bookId:" + bookId); return "index"; } }
控制臺輸出:bookId:1
@PathVariable 映射 URL 綁定的占位符
通過 @PathVariable 可以將 URL 中占位符參數綁定到控制器處理方法的入參中:URL 中的 {xxx} 占位符可以通過@PathVariable(“xxx“) 綁定到操作方法的入參中。五、使用HttpServletRequest獲取請求參數
客戶端界面(表單):
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
六、跳轉到另一個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); //使用服務端跳轉的方式轉向到另一個controller //return "forward:queryBook?bookId="+bookId; return "redirect:queryUser?bookId="+bookId; } }
控制臺輸出:bookId=321 bookId:321
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73441.html
摘要:是一個基于的框架??刂破鲗⒁晥D響應給用戶通過視圖展示給用戶要的數據或處理結果。有了減少了其它組件之間的耦合度。 相關閱讀: 本文檔和項目代碼地址:https://github.com/zhisheng17/springmvc 轉載請注明出處和保留以上文字! 了解 Spring: Spring 官網:http://spring.io/ 一個好的東西一般都會有一個好的文檔解釋說明,如果你...
摘要:客戶端提交阻止默認事件得到搜索框數據值轉為的方法失敗啦當前請求方式為控制臺輸出當前請求方式為客戶端彈窗三以方式接收以數組形式傳遞客戶端失敗啦注意傳遞到后端時應為的格式數據,否則可能會出現錯誤。 前后端的數據交互,除了通過form表單進行提交外,也可以通過ajax向后端傳遞和接收json格式數據(這種方式可以實現請求數據和頁面分離)。本文將總結一下在Spring MVC中接收和響應jso...
摘要:請求旅程的第一站是的。的任務是將請求發送控制器控制器是一個用于處理請求的組件。處理映射器根據請求攜帶的信息來進行決策。這樣的結果就是,只能找到顯示聲明在配置類中的控制器。 構建Spring Web應用 說明 如果你有幸能看到。 1、本文參考了《Spring 實戰》重點內容,參考了GitHub上的代碼 2、本文只為記錄作為以后參考,要想真正領悟Spring的強大,請看原書。 3、在一次...
摘要:初步使用幾種傳參方式本次沿用上次的工程,在中添加幾個方法創建模型修改直接把表單參數寫入的相應方法中通過來接收通過來接收通過接收用注解綁定請求參數測試接口測試使用的是火狐的插件,使用類似的工具也可以,或者寫一個表單,這里不在多解釋可以看到請求 Spring MVC初步使用 Spring MVC 幾種傳參方式 本次沿用上次的工程,在controller中添加幾個方法 創建User模型 pu...
閱讀 2404·2021-11-24 09:39
閱讀 3223·2021-10-09 09:53
閱讀 1130·2021-09-22 16:06
閱讀 4442·2021-09-02 10:18
閱讀 800·2021-08-23 09:42
閱讀 1761·2021-08-17 10:11
閱讀 2685·2019-08-30 13:02
閱讀 2121·2019-08-30 12:49