請求引數繫結
阿新 • • 發佈:2021-01-31
我們都知道,表單中請求引數都是基於 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中配置