【问题标题】:How can I forward a request to a backend server with a servlet? [duplicate]如何使用 servlet 将请求转发到后端服务器? [复制]
【发布时间】:2013-03-26 11:48:13
【问题描述】:

我有一个 servlet 引擎作为前端 Web 服务器,并希望将一些请求转发到后端服务器。无法进行重定向。

servlet 规范中是否有任何有用的 API?或者是此类功能的一些示例?

我知道我可以通过 HttpUrlConnection 做到这一点。但是有一些更简单的解决方案吗?

【问题讨论】:

  • 您可以使用response.sendRedirect([URL]) 进行重定向,前提是客户端可以访问服务器。
  • 您的问题有两种可能的解决方案。
  • 如果“后端服务器”在同一个 Web 容器中运行,您可以转发请求,这意味着它只在另一个 servlet 上下文中运行。你的环境是这样的吗?
  • @RavindraGullapalli 我写过重定向是不可能的。原因是浏览器无权访问后端服务器。后端服务器被防火墙阻止。
  • @w4rumy 没有后端服务器在另一台服务器上运行并且不是 servlet 容器。

标签: java servlets forward


【解决方案1】:

您不能转发请求到另一台服务器。如果您要转发到的 servlet 位于同一服务器中,则转发有效。

所以你的选择是:

  • 重定向到后端,
  • 向后端发送 HTTP 请求,提取结果并作为对原始请求的响应传回原始客户端,或者
  • 其他完全不涉及 HTTP 的东西。

servlet 规范中是否有任何有用的 API?

除了你已经找到的那些(显然)之外没有。

但是有一些更简单的解决方案吗?

AFAIK,不。特别是,如果后端是不同的服务器,则不能选择“转发”。

【讨论】:

    【解决方案2】:

    我现在从 Jetty 找到了ProxyServlet。这似乎是一个很好的开始示例。

    【讨论】:

      猜你喜欢
      • 2016-04-10
      • 2016-03-13
      • 2012-06-07
      • 2020-11-26
      • 2015-05-04
      • 1970-01-01
      • 2022-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多