2010-11-19 4 views
2

Comment transmettre un tableau d'une servlet à une autre servlet?Passage d'un tableau d'une servlet à une autre servlet

+0

Il y a juste trop d'informations manquantes dans votre question. La question de jball, si les servlets font partie de la même application web, si ce tableau est spécifique à la requête ou juste certaines données globales, etc, etc ... – vanza

+0

servlets font partie de la même application web et array est un tableau normal qui a des valeurs de quelques calculs dans servlet 1 et doit être passé à servlet 2 – Compuser7

Répondre

6

Si vous transmettez la demande en cours à une autre servlet, définissez-la comme attribut de requête.

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

Il sera disponible dans un autre servlet comme suit:

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

Ou, si vous tirer une nouvelle marque demande à un autre servlet, puis réglez simplement comme demande des paramètres.

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

Il sera disponible dans un autre servlet comme suit:

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

Ou, si les données sont trop volumineux pour être transmis en tant que paramètres de demande (longueur sécurité maximale est de 255 caractères ASCII), puis enregistrez-le en session et passez une clé unique comme paramètre isntead.

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

Il sera disponible dans un autre servlet comme suit:

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

votre solution est la meilleure pour moi. J'ai utilisé la dernière option. Merci beaucoup –