【问题标题】:How to pass data when redirecting from one web application to another?从一个 Web 应用程序重定向到另一个 Web 应用程序时如何传递数据?
【发布时间】:2010-09-20 07:01:49
【问题描述】:

我有两个 Web 应用程序部署在同一个 J2EE 应用程序服务器中。我需要从一个 Web 应用程序重定向到另一个。我还需要在 Web 应用程序 1 的 Header 中设置一些信息,以便它在 Web 应用程序 2 中可用。 当我尝试访问在 Web App2 的 Web App1 的标头中设置的信息时,我得到“null”。我在 Web 应用程序 1 中使用 response.sendRedirect("http://localhost/webapp2") 进行重定向。请帮我解决这个问题。

谢谢, 应用程序。

【问题讨论】:

    标签: java web-applications redirect cross-context


    【解决方案1】:

    重定向由客户端(浏览器)处理。因此,只有客户端才能获得您发送的标头。标头不会传递给重定向到的 webapp。

    您可以执行以下操作之一,将信息从一个 Web 应用传递到另一个:

    • 将数据作为请求参数传递
    • 以 cookie 形式发送数据,不受路径限制
    • 使用跨上下文调度

    客户端收到的 cookie 将被发送回服务器。客户端不知道它是一个不同的 webapp。您只需将cookie path 设置为/

    跨上下文分发由容器中的内部转发完成(使用来自 ServletContext 的RequestDispatcher)。客户端永远不会知道,请求是由另一个 webapp 处理的。您可以设置请求属性来传递数据。出于安全原因,容器必须启用跨上下文调度。

    【讨论】:

    • 我正在使用 WebSphere Application Server。我没有找到关于跨上下文调度的太多信息。有一种叫做远程请求调度的东西。但它需要 WAS 的网络部署版本。是否可以跨部署在同一个容器上的两个 Web 应用程序执行此操作?您能否告诉我需要进行的配置?
    • 我不是 IBM 顾问,但应该可以。不知道默认配置是什么,但我在 IBM 页面中找到了一些内容:publib.boulder.ibm.com/wasce/V2.0.0/en/…
    【解决方案2】:

    您可以将信息作为 URL 参数发送。

    重定向到http://localhost/webapp2?param1=value1&param2=value2 ....

    【讨论】:

    • 我需要在 header 中设置信息。这是因为部署在生产服务器上的 web 应用程序 2 从 header 中获取信息(这是由外部安全管理器设置的)。我们需要在不修改现有代码的情况下使用 Web 应用程序 2。
    【解决方案3】:

    其中一个选项是将信息作为 GET 属性简单地传递到您在 sendRedirect 调用中使用的 URL。

    【讨论】:

      猜你喜欢
      • 2016-05-11
      • 2013-03-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      • 2019-03-29
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多