首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JSP 向 Servlet 傳遞集合數據的三種主流方案

     編輯:程式設計疑難解答

方案一:JSON 序列化(推薦)

JSP 頁面用 JS 組裝 JSON,AJAX POST 發送,Servlet 用 Jackson/Gson 反序列化。

// JSP (JS)
const list = [{id:1,name:'A'},{id:2,name:'B'}];
fetch('/submit', {
  method: 'POST',
  headers: {'Content-Type':'application/json'},
  body: JSON.stringify(list)
});

// Servlet
List<Item> items = new ObjectMapper().readValue(request.getInputStream(),
    new TypeReference<List<Item>>(){});

方案二:表單數組命名規約

JSP 生成同名輸入框 name="items[0].id",Spring MVC 自動綁定 List<Item> items。

<c:forEach items="${list}" var="item" varStatus="vs">
  <input name="items[${vs.index}].id" value="${item.id}">
  <input name="items[${vs.index}].name" value="${item.name}">
</c:forEach>

方案三:Session 暫存(小數據量)

// JSP
session.setAttribute("tempList", list);
response.sendRedirect("servletUrl");

// Servlet
List<Item> list = (List<Item>) session.getAttribute("tempList");
session.removeAttribute("tempList");

對比選型

方案適用場景優點缺點
JSON + AJAX前後端分離、複雜對象類型安全、跨語言、異步體驗好需引入 Jackson/Gson
表單數組傳統 JSP + Spring MVC零依賴、瀏覽器原生支援僅限簡單對象、大數據量 URL 超長
Session頁面跳轉傳遞、臨時數據簡單、無大小限制佔用 Session 內存、需手動清理

總結

現代項目首選 JSON + AJAX,配合 RESTful API 實現前後端分離;維護舊項目可用 表單數組 快速對接 Spring MVC;Session 僅作臨時過渡。切記:集合泛型在運行期擦除,反序列化時需用 TypeReference 保留類型信息。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved