Servlet:转发到不同Web应用程序中的资源

ska*_*man 3 java servlets

我正在尝试按照模块化原则构建一个java Web应用程序,在一个WAR中使用一些公共资源(主要是JSP),在另一个WAR中使用一些自定义资源.这意味着JSP分散在不同的WAR中.

现在,JavaEE对这种恶作剧感到皱眉,并希望你把所有东西放在一个地方.我目前的解决方法是使用Eclipse触发的Ant脚本将一个WAR的内容复制到另一个中,但这不是一个令人愉快的解决方案(它很脆弱,而且依赖于IDE).

理想情况下,我希望能够做的是让servlet转发到位于不同WAR中的JSP,并将其部署到其中.这样我可以更自由地组装WAR.但是,RequestDispatcher似乎并不支持这样的事情.

另一种可能性是使用<c:import>,它不会使资源从一个不同的WAR(有一些警告)被导入.这可能允许我在一个WAR中有一个"钩子"JSP,然后从另一个JSP中拖入所需的JSP.但是,这有点笨拙,并且<c:import>允许它显示底层servlet API也是如此.但是如何通过RequestDispatcherservlet 访问该功能?

Boz*_*zho 6

您可以通过以下步骤:

  • 使用获得外国背景 ServletContext.getContext(contextPath)

  • 得到RequestDispatcher外国的ServletCotnext.

  • META-INF/context.xml集合中crossContext="true"(可能是特定于tomcat的)