2010-11-19 234 views
2

如何将数组从一个servlet传递到另一个servlet?将数组从一个servlet传递到另一个servlet

+0

只是有太多的信息,在你的问题遗漏。 jball的问题,servlet是否是同一个web应用的一部分,这个数组是否是特定于请求的数据,还是仅仅是一些全局数据等等等等...... – vanza 2010-11-19 03:35:13

+0

servlets是同一个web应用程序的一部分,数组是具有值的普通数组在servlet 1中进行一些计算,并且必须传递给servlet 2 – Compuser7 2010-11-19 03:51:54

回答

6

如果您将当前的请求传递给另一个servlet,那么只需将它设置为请求属性即可。

request.setAttribute("array", array); 
request.getRequestDispatcher("/servleturl").include(request, response); 

它会在另一个servlet可用如下:

Object[] array = (Object[]) request.getAttribute("array"); 

或者,如果你一枪一全新请求另一个servlet,那么就设置为请求参数。

StringBuilder queryString = new StringBuilder(); 
for (Object item : array) { 
    queryString.append("array=").append(URLEncoder.encode(item, "UTF-8")).append("&"); 
} 
response.sendRedirect("/servleturl?" + queryString); 

它会在另一个servlet可用如下:

String[] array = request.getParameterValues("array"); 

或者,如果数据太大作为请求参数传递(安全最大长度为255个ASCII字符),然后将它存储在会话中,并传递一些唯一键作为参数。

String arrayID = UUID.randomUUID().toString(); 
request.getSession().setAttribute(arrayID, array); 
response.sendRedirect("/servleturl?arrayID=" + arrayID); 

它会在另一个servlet可用如下:

String arrayID = request.getParameter("arrayID"); 
Object[] array = (Object[]) request.getSession().getAttribute(arrayID); 
request.getSession().removeAttribute(arrayID); 
+0

您的解决方案对我来说是最合适的。我使用了最后一个选项。非常感谢 – 2013-01-21 11:11:12

相关问题