Spring MVC 通過分析處理方法的簽名,將 HTTP 請求信息綁定到處理方法的相應人參中。
- @PathVariable
- @RequestParam
- @RequestHeader 等)
SpringMVC 框架會將 HTTP 請求的信息綁定到相應的方法入參中,並根據方法的返回值類型做出相應的后續處理。
一、 @RequestParam 綁定請求參數值
在處理方法入參處使用 @RequestParam 可以把請求參數傳遞給請求方法
- value:參數名–
- required:是否必須。默認為 true, 表示請求參數中必須包含對應的參數,若不存在,將拋出異常
/** * @RequestParam 來映射請求參數. value 值即請求參數的參數名 required 該參數是否必須. 默認為 true * defaultValue 請求參數的默認值 */ @RequestMapping(value = "/testRequestParam") public String testRequestParam(@RequestParam(value = "username") String un, @RequestParam(value = "age", required = false, defaultValue = "0") int age) { System.out.println("testRequestParam, username: " + un + ", age: " + age); return SUCCESS; }
二、@RequestHeader 綁定請求報頭的屬性值
請求頭包含了若干個屬性,服務器可據此獲知客戶端的信息,通過 @RequestHeader 即可將請求頭中的屬性值綁定到處理方法的入參中
/** * 了解: 映射請求頭信息 用法同 @RequestParam */ @RequestMapping("/testRequestHeader") public String testRequestHeader( @RequestHeader(value = "Accept-Language") String al) { System.out.println("testRequestHeader, Accept-Language: " + al); return SUCCESS; }
三、@CookieValue 綁定請求中的 Cookie 值
@CookieValue 可讓處理方法入參綁定某個 Cookie 值
/** * 了解: * @CookieValue: 映射一個 Cookie 值. 屬性同 @RequestParam */ @RequestMapping("/testCookieValue") public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) { System.out.println("testCookieValue: sessionId: " + sessionId); return SUCCESS; }
四、POJO 對象綁定請求參數值
Spring MVC 會按請求參數名和 POJO 屬性名進行自動匹配,自動為該對象填充屬性值。支持級聯屬性。
/** * Spring MVC 會按請求參數名和 POJO 屬性名進行自動匹配, 自動為該對象填充屬性值。支持級聯屬性。 * 如user.address.city */ @RequestMapping("/testPojo") public String testPojo(User user) { System.out.println("testPojo: " + user); return SUCCESS; }
form表單
<form action="springmvc/testPojo" method="post"> username: <input type="text" name="username"/> <br> password: <input type="password" name="password"/> <br> email: <input type="text" name="email"/> <br> age: <input type="text" name="age"/> <br> city: <input type="text" name="address.city"/> <br> province: <input type="text" name="address.province"/> <br> <input type="submit" value="Submit"/> </form>
五、使用 Servlet API 作為入參
MVC 的 Handler 方法可以接受一下 ServletAPI 類型的參數
• HttpServletRequest
• HttpServletResponse
• HttpSession
• java.security.Principal
• Locale
• InputStream
• OutputStream
• Reader
• Writer
@RequestMapping("/testServletAPI") public void testServletAPI(HttpServletRequest request, HttpServletResponse response, Writer out) throws IOException { System.out.println("testServletAPI, " + request + ", " + response); out.write("hello springmvc"); // return SUCCESS; }