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

发布于 2024-10-04 00:06:57 字数 59 浏览 0 评论 0原文

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

How do I pass a variable array from one servlet to another servlet?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

网白 2024-10-11 00:06:57

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

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

它将在另一个 servlet 中可用,如下所示:

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

或者,如果您要向另一个 servlet 发出全新请求,则只需将其设置为请求参数即可。

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

它将在另一个 servlet 中可用,如下所示:

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

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

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

它将在另一个 servlet 中可用,如下所示:

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

If you're passing the current request to another servlet, then just set it as request attribute.

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

It'll be available in another servlet as follows:

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

Or, if you're firing a brand new request to another servlet, then just set it as request parameters.

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

It'll be available in another servlet as follows:

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

Or, if the data is too large to be passed as request parameters (safe max length is 255 ASCII characters), then just store it in session and pass some unique key as parameter isntead.

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

It'll be available in another servlet as follows:

String arrayID = request.getParameter("arrayID");
Object[] array = (Object[]) request.getSession().getAttribute(arrayID);
request.getSession().removeAttribute(arrayID);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文