2010-11-19 227 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

相關問題