Comment transmettre un tableau d'une servlet à une autre servlet?Passage d'un tableau d'une servlet à une autre servlet
Répondre
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);
votre solution est la meilleure pour moi. J'ai utilisé la dernière option. Merci beaucoup –
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
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