我们有一个包含 13 个模块的大型应用程序。根据客户需求,我们应该能够部署核心模块+客户特定模块。我们计划将应用程序分成多场 war 。现在的问题是我们有一些常见的 jsp,如 header.jsp、error.jsp 等。有什么方法可以让我们在核心 war 中保留共同的 jsp,其余的 war 将能够使用它,或者我必须复制这些jsp在构建过程中的个人 war 中。我知道 CSS 和 Javascript 文件可以在 ear 包装的多个 war 中共享,但不确定 jsp。
最佳答案
好问题。您会很高兴听到答案是"is",尽管这在很大程度上取决于您的 servlet 容器的配置方式。
它是使用 JSTL 完成的 <c:import>
标签,它有一个可选的 context
属性定义为:
Name of the context (beginning with a /) of some other local web application to import the resource from.
假设您在上下文根下部署了 webapp A /A
,以及部署在 /B
下的 webapp B , 那么 A 中的 JSP 可以包含 x.jsp
来自 B 使用:
<c:import context="/B" url="x.jsp"/>
这一切都很好,很美好,但这必须通过servlet容器的安全机制,它可能不允许操作。例如,in Tomcat the crossContext
attribute must be set to true
.
关于java - 在 EAR 中的多个 war 中共享公共(public) jsp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3796815/