从JSP检索arraylist

从JSP检索arraylist,jsp,servlets,Jsp,Servlets,这就是我要做的 我有一个包含ArrayList的servlet和一个显示在servlet后面的JSP文件。在用户单击JSP文件上的next之后,我转到另一个servlet,它需要原始servlet中的ArrayList 如何使用JSP页面检索该Arraylist 目前,我将ArrayList作为JSP中的隐藏输入,但是新的Servlet调用不会将该隐藏输入作为ArrayList检索。如果可能,再次调用Servlet以获取更新的列表,或者使用参数来指示使用列表的哪一部分的相同列表。这是使用serv

这就是我要做的

我有一个包含ArrayList的servlet和一个显示在servlet后面的JSP文件。在用户单击JSP文件上的next之后,我转到另一个servlet,它需要原始servlet中的ArrayList

如何使用JSP页面检索该Arraylist


目前,我将ArrayList作为JSP中的隐藏输入,但是新的Servlet调用不会将该隐藏输入作为ArrayList检索。

如果可能,再次调用Servlet以获取更新的列表,或者使用参数来指示使用列表的哪一部分的相同列表。这是使用servlet作为控制器;您应该避免使用JSP文件表示作为控制器。虽然这现在看起来很复杂,但您会发现它使JSP和其他演示页面更容易编写。

使用HttpSession。将ArrayList作为会话属性存储在原始Servlet中,然后将其传递给JSP。然后再次从该JSP调用另一个Servlet。您应该从HttpSession获取Arraylist

另一种不是但推荐的方法是序列化值,然后再次将其发送回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.getParameterValueslist\u值构建一个新列表,该值返回字符串[],然后再次构建ArrayList


当然,如果列表中有几十个或数百个条目,并且ArrayList中存储了对象,那么这将不会非常有效。列表与原始列表完全没有变化,但如何检索原始列表?在返回ArrayList之前,我需要让用户在JSP页面上单击next按钮。这个问题相当模糊。但您可以在会话中跟踪数组列表,然后在每次请求servlet时返回它。但是有无数种方法可以做到这一点,问题是,当跟踪arraylist时,在将其发送到新servlet之前暂时保存它的JSP文件会产生错误。JSP可以从第一个servlet打开并保存arraylist,但是第二个servlet在从您熟悉的JSPAre会话发送arraylist时无法打开相同的arraylist?如果没有,你可能想看看这些。会话可用于保留从一个servlet调用到下一个servlet调用的信息。将Arraylist存储在会话作用域中。Arraylist中最多有20个字符串,但大约有5个数组列表。@ShivamKumar:然后转到会话。