1. 程式人生 > 其它 >請求引數繫結

請求引數繫結

技術標籤:springmvcspringmvcjava

我們都知道,表單中請求引數都是基於 key=value 的。
SpringMVC 繫結請求引數的過程是通過把表單提交請求引數,作為控制器中方法引數進行繫結的
例:例如:

<a href="account/findAccount?username=haha">查詢賬戶</a>
中請求引數是:
username=haha

/**
* 查詢賬戶
* @return
*/
@RequestMapping("/findUser")
public String findAccount(String username) {
System.out.println("查詢了賬戶。。。。"+username);
return "success";
}

支援的資料型別

基本型別引數:
包括基本型別和 String 型別
POJO 型別引數:
包括實體類,以及關聯的實體類
陣列和集合型別引數:
包括 List 結構和 Map 結構的集合(包括陣列)

基本型別的繫結
如果是基本型別或者 String 型別:
要求我們的引數名稱必須和控制器中方法的形參名稱保持一致。(嚴格區分大小寫)

如果是 POJO 型別,或者它的關聯物件:
要求表單中引數名稱和 POJO 類的屬性名稱保持一致。並且控制器方法的引數型別是 POJO 型別。

示例

    private String username;
    private String password;
    private Double money;
    //引用
    private User user;
           <form action="param/saveAccount" method="post">
                       <%--javabean封裝方式 name 必須和實體類名稱對應上   name="user.username" user實體類中的資料--%>
                           姓名:<input type="text" name="username"/><br/>
                           密碼:<input type="text" name="password"/><br/>
                           金額:<input type="text"name="money"/><br/>
                           使用者姓名:<input type="text" name="user.username"/><br/>
                          使用者年齡:<input type="text" name="user.age"/><br/>
                             <input type="submit" value="提交"/><br/>
                  </form>

集合型別
第一種:
要求集合型別的請求引數必須在 POJO 中。在表單中請求引數名稱要和 POJO 中集合屬性名稱相同。
給 List 集合中的元素賦值,使用下標。
給 Map 集合中的元素賦值,使用鍵值對。
第二種:
接收的請求引數是 json 格式資料。需要藉助一個註解實現。
示例

     private String username;
     private String password;
    private Double money;
     private List<User> list;
    private Map<String,User> map;
 <%--把資料封裝到Account中 類中存在list和map集合--%>
           <form action="param/saveAccount" method="post">
                           姓名:<input type="text" name="username"/><br/>
                           密碼:<input type="text" name="password"/><br/>
                           金額:<input type="text"name="money"/><br/>

                           使用者姓名:<input type="text" name="list[0].username"/><br/>
                           使用者年齡:<input type="text" name="list[0].age"/><br/>
                           使用者姓名:<input type="text" name="map['one'].username"/><br/>
                           使用者年齡:<input type="text" name="map['one'].age"/><br/>
                    <input type="submit" value="提交"/><br/>
                  </form>

在這裡插入圖片描述
請求引數亂碼問題
在web.xml中配置

characterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 characterEncodingFilter /*