这是我想要做的。
我有一个 servlet,其中包含一个ArrayList
, 和一个在 servlet 之后显示的 JSP 文件。在用户单击JSP
文件的下一步后,我转到另一个 servlet,它需要ArrayList
来自原始 Servlet 的。
我如何使用 JSP 页面来检索它Arraylist
?
目前,我ArrayList
在 JSP 中将 The 作为隐藏输入,但新Servlet
调用不会将该隐藏输入检索为ArrayList
.
使用HttpSession
. 在将ArrayList
原始 Servlet 传递给JSP
. 然后再当你Servlet
从那个调用另一个JSP
。你应该Arraylist
从HttpSession
.
另一种不推荐但不推荐的方法是序列化值,然后将其再次发送回 Servlet。
如果有少量数据,如字符串、整数等ArrayList
,你可以这样做
public String serializeArrayList(ArrayList list){
StringBuffer sb = new StringBuffer();
for(int i = 0; i < list.size(); i++){
sb.append("<input type=\"hidden\" name=\"list_values\" value=\"");
sb.append(list.get(i));
sb.append("\">\n");
}
return sb.toString();
}
然后构建一个新列表,使用request.getParameterValues("list_values")
它返回一个String[]
并再次构建 ArrayList
当然,如果列表中有几十个或几百个条目,并且如果您有对象存储在ArrayList
如果可能,再次调用 servlet 以获取更新的列表,或带有参数的相同列表以指示要使用列表的哪一部分。这是使用您的 servlet 作为控制器;您应该避免使用 JSP 文件(演示文稿)作为控制器。虽然现在这看起来很复杂,但您会发现它使您的 JSP(和其他演示文稿)页面更易于编写。