如何在从一个Web应用程序重定向到另一个Web应用程序时传递数据?

问题描述:

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

感谢, 应用。

+0

恕我直言,这是不可能的 – chedine 2010-09-20 07:46:41

重定向由客户端(浏览器)处理。所以只有客户端才能获得你发送的头文件。标题不会传递给重定向到的webapp。

你可以做以下的事情从一个Web应用程序的信息传递到另一个问题:

  • 作为请求参数传递数据
  • 发送数据作为cookie的时候没有路径限制
  • 利用跨情境调度

客户端收到后会发送回服务器的cookie。客户端不知道它是一个不同的web应用程序。您只需将cookie path设置为/即可。

交叉上下文dispacthing由在容器(使用从ServletContext一个RequestDispatcher)的内部向前进行。客户永远不会知道,请求是由另一个webapp处理的。你可以设置一个请求属性来传递数据。出于安全原因,必须由容器启用交叉上下文分派。

+0

我正在使用WebSphere Application Server。我没有找到关于跨环境调度的很多信息。有一种叫做远程请求调度的功能。但它需要WAS的网络部署版本。是否可以在部署在同一容器上的两个Web应用程序中执行此操作?你能让我知道需要做的配置吗? – Apps 2010-09-20 08:49:32

+0

我不是IBM的顾问,但它应该工作。不知道默认配置是什么,但是我在IBM页面中找到了一些内容:http://publib.boulder.ibm.com/wasce/V2.0.0/en/container-specific-web-application-settings.html – 2010-09-20 09:07:53

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

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

+0

我需要设置header.This的信息,因为这是部署生产服务器上的Web应用程序2会从包头中的信息(这是由外部安全管理器设置)。我们需要使用Web应用程序2而不修改现有代码。 – Apps 2010-09-20 07:12:36

选项之一将是简单的通过信息获得你的sendRedirect调用中使用的URL属性。