【问题标题】:How to forward request from web1/servlet to web2/servlet?如何将请求从 web1/servlet 转发到 web2/servlet?
【发布时间】:2011-06-20 19:41:24
【问题描述】:

我有两个 Web 应用程序,即 web1 和 web2。我想将来自 web1/servlet1 的请求转发到 web2/servlet2。可能吗?请帮忙!

【问题讨论】:

  • 你可能想看看javapractices.com/topic/TopicAction.do?Id=181,看看你是否真的应该使用forward。
  • 是的,我确信我必须使用 forward 因为我必须从请求中发送所有参数。它在相同的上下文中运行良好,但由于其他 servlet 在其他应用程序中,所以它不会被转发
  • 您可能需要查看 ServletRequest.getRequestDispatcher,因为它与使用 ServletContext 不同。

标签: java servlets


【解决方案1】:

这是一个两步过程:

  1. 获取代表web2ServletContext
  2. 从对应于servlet2ServletContext获取RequestDispatcher

所以,像这样,来自servlet1

ServletContext web1 = getServletContext();
ServletContext web2 = web1.getContext("/web2");
RequestDispatcher dispatcher = web2.getRequestDispatcher("/servlet2");
dispatcher.forward(request, response);

所有这些都有一个很大的警告 - 容器可能未配置为允许跨上下文转发,因为它存在潜在的安全风险。如果是这种情况,getContext("web2") 将返回 null

【讨论】:

  • getwriter 已经使用并且 outputstream 已经使用等?怎么办?
  • @wasimbhalli:这与你的问题无关。
  • 前段时间我在this post总结了跨上下文资源访问(也可以作为请求调度的基础)。它还包括 Tomcat 的示例配置,它允许您做这些粗糙的事情。
猜你喜欢
  • 2014-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-15
  • 2012-10-05
  • 2022-01-10
  • 1970-01-01
  • 2011-07-23
相关资源
最近更新 更多