Servlets 将变量从一个servlet传递到另一个servlet

Servlets 将变量从一个servlet传递到另一个servlet,servlets,parameter-passing,Servlets,Parameter Passing,如何将变量数组从一个servlet传递到另一个servlet?如果要将当前请求传递到另一个servlet,则只需将其设置为请求属性即可 request.setAttribute("array", array); request.getRequestDispatcher("/servleturl").include(request, response); 它将在另一个servlet中可用,如下所示: Object[] array = (Object[]) request.getAttribute

如何将变量
数组
从一个servlet传递到另一个servlet?

如果要将当前请求传递到另一个servlet,则只需将其设置为请求属性即可

request.setAttribute("array", array);
request.getRequestDispatcher("/servleturl").include(request, response);
它将在另一个servlet中可用,如下所示:

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

或者,如果您正在向另一个servlet发出一个全新的请求,那么只需将其设置为请求参数

StringBuilder queryString = new StringBuilder();
for (Object item : array) {
    queryString.append("array=").append(URLEncoder.encode(item, "UTF-8")).append("&");
}
response.sendRedirect("/servleturl?" + queryString);
它将在另一个servlet中可用,如下所示:

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

或者,如果数据太大,无法作为请求参数传递(安全最大长度为255个ASCII字符),则只需将其存储在会话中,并作为参数isntead传递一些唯一键即可

String arrayID = UUID.randomUUID().toString();
request.getSession().setAttribute(arrayID, array);
response.sendRedirect("/servleturl?arrayID=" + arrayID);
它将在另一个servlet中可用,如下所示:

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

你的问题中遗漏了太多信息。jball的问题是,servlet是否是同一web应用程序的一部分,这个数组是特定于请求的还是仅仅是一些全局数据,等等。servlet是同一web应用程序的一部分,数组是一个普通数组,在servlet 1中有一些计算值,必须传递给servlet 2。您的解决方案对我来说是最好的。我用了最后一个选项。非常感谢