2010-11-19 13 views
2

あるサーブレットから別のサーブレットに配列を渡すにはどうすればよいですか?あるサーブレットから別のサーブレットへの配列の受け渡し

+0

あなたの質問に欠けてあまりにも多くの情報があります。 jballの質問、サーブレットが同じWebアプリケーションの一部であるかどうか、この配列がリクエスト固有かどうか、あるいは何らかのグローバルデータかどうかなど... – vanza

+0

サーブレットは同じWebアプリケーションの一部であり、配列は値を持つ通常の配列ですサーブレット1のいくつかの計算のうちサーブレット2 – Compuser7

答えて

6

現在のリクエストを別のサーブレットに渡す場合は、request属性として設定してください。

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

次のようにそれは別のサーブレットで利用可能になるでしょう:

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

それとも、あなたは別のサーブレットにブランドの新しい要求を発射している場合は、同じようにそれを設定しますリクエストパラメータ。

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

次のようにそれは別のサーブレットで利用可能になるでしょう:

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

あるいは、データはリクエストパラメータとして渡されるにはあまりにも大きい場合(安全な最大長は255 ASCII文字です)、それをセッションに格納し、パラメータisnteadとして一意のキーを渡します。

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

次のようにそれは別のサーブレットで利用可能になるでしょう:

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

に渡されなければなりません。私は最後のオプションを使用しました。 –

関連する問題