从一个 Web 应用程序重定向到另一个 Web 应用程序时如何传递数据?
我有两个 Web 应用程序部署在同一个 J2EE 应用程序服务器中。我需要从一个 Web 应用程序重定向到另一个 Web 应用程序。另外,我需要在 Web 应用程序 1 的标头中设置一些信息,以便它在 Web 应用程序 2 中可用。 当我尝试访问 Web App2 中 Web App1 标头中设置的信息时,我得到“null”。我在 Web 应用程序 1 中使用 response.sendRedirect("http://localhost/webapp2")
进行重定向。请帮我解决这个问题。
谢谢, 应用程序。
I have two web application which are deployed in the same J2EE Application server. I need to redirect from one web application to another. Also I need to set some information in the Header from web application 1 so that it is available in web application 2.
When I try to access the information which set in the header of Web App1 in Web App2, I'm getting "null". I'm using response.sendRedirect("http://localhost/webapp2")
in Web Application 1 to redirect. Please help me to solve this.
Thanks,
Apps.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
重定向由客户端(浏览器)处理。因此只有客户端才能收到您发送的标头。标头不会传递到重定向到的 Web 应用程序。
您可以执行以下操作之一,将信息从一个 Web 应用程序传递到另一个 Web 应用程序:
客户端收到的 Cookie 将发送回服务器。客户端不知道这是一个不同的 Web 应用程序。您只需设置 cookie 路径 到
/
。跨上下文调度是通过容器中的内部转发完成的(使用 RequestDispatcher 来自 ServletContext)。客户端永远不会知道,该请求是由另一个 Web 应用程序处理的。然后您可以设置请求属性来传递数据。出于安全原因,容器必须启用跨上下文调度。
A redirect is processed by the client (the browser). So only the client gets the headers you sent. The headers will not be passed to the webapp redirected to.
You can do one of the following things to pass information from one webapp to another:
A cookie received by the client will be send back to the server. The client does not know it is a different webapp. You just need to set the cookie path to
/
.Cross context dispacthing is done by an internal forward in the container (use a RequestDispatcher from the ServletContext). The client will never know, the request is handled by another webapp. You than can set a request attribute to pass data. Cross context dispatching has to be enabled by the container for security reasons.
您可以将信息作为 URL 参数发送。
重定向到
http://localhost/webapp2?param1=value1¶m2=value2 ....
You could send the information as URL parameters.
Redirect to
http://localhost/webapp2?param1=value1¶m2=value2 ....
其中一种选项是将信息作为您在 sendRedirect 调用中使用的 URL 中的 GET 属性进行简单传递。
One of the options would be to simple pass information as GET attributes in the URL you used in sendRedirect call.