【发布时间】:2011-04-01 15:48:39
【问题描述】:
好的,我只使用 response.sendRedirect 和 forward 来处理购买的 servlet,但现在我需要一个 servlet 请求答案,而不是将客户端发送到另一个 servlet。
我该怎么做?
让我举个例子:想象一个 servlet,它在一页中为您提供时间和温度。
在这个 servlet 中,你需要从 2 个不同的 servlet 请求数据,所以你需要我在这里问的内容......
【问题讨论】:
好的,我只使用 response.sendRedirect 和 forward 来处理购买的 servlet,但现在我需要一个 servlet 请求答案,而不是将客户端发送到另一个 servlet。
我该怎么做?
让我举个例子:想象一个 servlet,它在一页中为您提供时间和温度。
在这个 servlet 中,你需要从 2 个不同的 servlet 请求数据,所以你需要我在这里问的内容......
【问题讨论】:
如果两个 servlet 在同一服务器上的同一上下文中运行,则只需使用 RequestDispatcher#include()。
request.getRequestDispatcher("/otherservleturl").include(request, response);
您甚至可以在由第一个 servlet 转发的 JSP 中执行此操作。
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
与
<jsp:include page="/otherservleturl" />
如果它们不在相同的上下文中运行,那么您需要以编程方式对其触发 HTTP 请求并将其 HTTP 响应输出通过管道传输到当前响应输出。
InputStream input = new URL("http://other.com/servlet").openStream();
OutputStream output = response.getOutputStream();
IOUtils.copy(input, output);
有关更高级的 HTTP 请求,请查看this mini-tutorial。
【讨论】:
忽略您正在从 servlet 发出请求的事实——这只是普通的Java 代码。
忽略您正在向 servlet 发出请求这一事实 - 这只是一个普通的 HTTP 请求。
使用您通常用于处理 HTTP 的任何内容 - 例如。 Apache HttpClient,或内置的URLConnection 类。获取数据,将其与任何其他数据结合,作为响应。
【讨论】: