Передача переменной из одного сервлета в другой сервлет - PullRequest
2 голосов
/ 19 ноября 2010

Как передать переменную array из одного сервлета в другой сервлет?

1 Ответ

6 голосов
/ 19 ноября 2010

Если вы передаете текущий запрос другому сервлету, просто установите его как атрибут запроса.

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);
...