我们有一个有13个模块的大型应用程序。根据客户要求,我们应该能够部署核心模块+客户特定模块。我们计划将应用程序分成多个战争。现在的问题是我们有一些常见的jsp,比如header.jsp,error.jsp等。有没有什么方法可以让我们在核心战争中保持常见的jsp,其余的战争将能够使用它或者我必须复制这些jsp在构建过程中的invidiual战争中。我知道CSS和Javascript文件可以在耳塞包装的多个战争中共享,但不确定jsp的。
答案 0 :(得分:4)
好问题。您会很高兴听到答案是“是”,尽管它高度依赖于您的servlet容器的配置方式。
使用JSTL <c:import>
标记完成,该标记具有可选的context
属性,定义为:
上下文的名称 (从/开头) 其他本地Web应用程序 从中导入资源。
所以说你在上下文根/A
下部署了webapp A,在/B
下部署了webapp B,然后A中的JSP可以包含来自B的x.jsp
:
<c:import context="/B" url="x.jsp"/>
这一切都非常好用,但这必须通过servlet容器的安全机制,并且可能不允许操作。例如,in Tomcat the crossContext
attribute must be set to true
。