SpringMVC——映射請求參數


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;
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM