2010-11-19 21 views
2

Wie übergebe ich ein Array von einem Servlet zu einem anderen Servlet?Übergeben eines Arrays von einem Servlet zu einem anderen Servlet

+0

Es gibt einfach zu viele Informationen in Ihrer Frage fehlt. jball's Frage, ob die Servlets Teil derselben Web-App sind, ob dieses Array anforderungsspezifisch ist oder nur einige globale Daten usw. etc ... – vanza

+0

Servlets sind Teil derselben Web-App und Array ist ein normales Array mit Werten von einigen Berechnungen in Servlet 1 und muss an Servlet 2 übergeben werden – Compuser7

Antwort

6

Wenn Sie die aktuelle Anforderung an ein anderes Servlet übergeben, legen Sie es einfach als Anforderungsattribut fest.

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

Es wird in einem anderen Servlet zur Verfügung wie folgt:

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

Oder, wenn Sie eine brandneue Anforderung an einem anderen Servlet sind Brennen, dann setzt es einfach als Anfrageparameter.

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

Es wird in einem anderen Servlet zur Verfügung wie folgt:

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

Oder, wenn die Daten zu groß ist, als Anforderungsparameter übergeben werden (sichere maximale Länge beträgt 255 ASCII-Zeichen), dann speichern Sie es einfach in der Session und übergeben Sie stattdessen einen eindeutigen Schlüssel als Parameter.

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

Es wird in einem anderen Servlet zur Verfügung wie folgt:

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

Ihre Lösung ist das Beste für mich. Ich habe die letzte Option benutzt. Vielen Dank –

Verwandte Themen