【问题标题】:How a servlet request data from other servlet?一个servlet如何从其他servlet请求数据?
【发布时间】:2011-04-01 15:48:39
【问题描述】:

好的,我只使用 response.sendRedirect 和 forward 来处理购买的 servlet,但现在我需要一个 servlet 请求答案,而不是将客户端发送到另一个 servlet。

我该怎么做?

让我举个例子:想象一个 servlet,它在一页中为您提供时间和温度。

在这个 servlet 中,你需要从 2 个不同的 servlet 请求数据,所以你需要我在这里问的内容......

【问题讨论】:

    标签: java servlets


    【解决方案1】:

    如果两个 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

    【讨论】:

      【解决方案2】:

      忽略您正在 servlet 发出请求的事实——这只是普通的Java 代码。

      忽略您正在向 servlet 发出请求这一事实 - 这只是一个普通的 HTTP 请求。

      使用您通常用于处理 HTTP 的任何内容 - 例如。 Apache HttpClient,或内置的URLConnection 类。获取数据,将其与任何其他数据结合,作为响应。

      【讨论】:

        猜你喜欢
        • 2019-11-30
        • 1970-01-01
        • 1970-01-01
        • 2016-12-08
        • 2011-06-20
        • 1970-01-01
        • 1970-01-01
        • 2015-03-15
        • 2014-06-02
        相关资源
        最近更新 更多