一、數組綁定的使用場景
????????在實際開發中,可能會遇到客戶端請求需要傳遞多個同名參數到服務器端的情況,這種情況采用前面講解的簡單數據綁定的方式顯然是不合適的。此時,可以使用數組來接收客戶端的請求參數,完成數據綁定。
接下來通過一個批量提交商品的案例來演示數組的數據綁定,具體實現步驟如下所示。
1、創建一個商品類Product,用于封裝商品信息。Product類的具體代碼如下所示。
public class Product {private String proId; //商品idprivate String proName; //商品名稱public String getProId() {return proId;}public void setProId(String proId) {this.proId = proId;}public String getProName() {return proName;}public void setProName(String proName) {this.proName = proName;}
}
2、創建一個提交商品頁面products.jsp,在products.jsp中創建一個展示商品列表的表單,表單提交時向服務器端發送商品列表的所有id。products.jsp的具體代碼如下所示。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head><title>提交商品</title>
</head>
<body>
<form action="${pageContext.request.contextPath }/getProducts"method="post"><table width="220px" border="1"><tr><td>選擇</td><td>商品名稱</td></tr><tr><td><input name="proIds" value="1" type="checkbox"></td><td>Java基礎教程</td></tr><tr><td><input name="proIds" value="2" type="checkbox"></td><td>JavaWeb案例</td></tr><tr><td><input name="proIds" value="3" type="checkbox"></td><td>SSM框架實戰</td></tr></table><input type="submit" value="提交商品"/>
</form>
</body>
</html>
3、創建一個商品處理器類ProductController,在ProductController類中定義getProducts() 方法,用于接收表單提交的商品id。ProductController類的具體代碼如下所示。
@Controller
public class ProductController {// 獲取商品列表@RequestMapping("/getProducts")public void getProducts(String[] proIds) {for (String proId : proIds) {System.out.println("獲取到了Id為"+proId+"的商品"); }}
}
4、啟動chapter12項目,在瀏覽器中訪問提交商品頁面products.jsp,訪問地址為http://localhost:8080/chapter12/products.jsp。
5、勾選products.jsp顯示效果圖中所示的全部復選框,然后單擊“提交商品”按鈕,控制臺打印信息如下圖所示。
獲取到了Id為1的商品
獲取到了Id為2的商品
獲取到了Id為3的商品
????????從圖中所示的打印信息可以看出,程序打印出了提交的商品,這表明getProducts()方法獲取到了客戶端請求中的參數proIds的值,并將請求參數中多個同名的proIds參數值全部存儲在了getProducts()方法的proIds形參中,實現了數組的數據綁定。