为什么我不能从它的根目录访问所有 WAR 包文件?



我知道我应该能够从WAR根目录"/"引用WAR文件应用程序中的所有文件。但它似乎不起作用。我真的被难住了。

我的应用程序将其web内容部署在以下WAR文件中。

WAR
index.html
META-INF
WEB-INF
css
fonts.css
other style  sheets
images
Banner.jpg
jsp-pages
headers
beg.jsp
menu.jsp
end.jsp
level-1
pages
anypage.jsp
multiple subdirectories
multipe subdirecories
scripts
multiple scripts

我的应用程序在WAR目录的不同级别中有数百个html页面。它们都需要引用不同目录级别的图像、css文件、脚本文件和其他html页面。

因此,我非常希望能够引用WAR根目录"/"中的所有文件。(所以我不必每次都数"../"的数量。

我知道这应该让我从任何级别的任何文件链接这个样式表:

<link href="/css/fonts.css" rel="stylesheet" type="text/css"/>

但它不起作用,所以我不得不使用相对参照。

<link href="../../../css/fonts.css" rel="stylesheet" type="text/css"/>

更糟糕的是。这似乎不一致。

例如,WAR/jsp pages/level-1/pages中的所有html文件都是这样构造的。

<%@ include file='/jsp-pages/level-1/headers/beg.jsp'%>
content
<%@ include file='/jsp-pages/level-1/headers/end.jsp' %>

这是beg.jsp代码。所以请注意,我可以从WEB根目录"/"引用beg.jsp中的include。但我必须参考图片相对于页面的文件夹。

beg.jsp

<html>
<head>
the css link above
</head>
<body>
<div class="banner">
<!-- this needed a relative reference -->
<img style="width:100%"      src='../../../images/Banner.jpg'/>
<!-- but I could reference this include from '/' -->
<%@ include file='/jsp-pages/level-1/headers/menu.jsp' %>
<!--        Every page must close with         -->
<!--       </div> For: class='content-block'>  -->
<!--     </div> For: class='scroll-block'>     -->
<!--   </body>                                 -->
<!-- </html>                                   -->

解决方案非常简单,令人尴尬。

有点令人失望,没有人提供。

如果您使用部署应用程序

<web>
<web-uri>Pct109.war</web-uri>
<context-root>/</context-root>
</web>

也就是说,应用程序打开时只需http://domanName.org/

然后你可以用"/"参考所有战争文件

但是,如果你想在同一个域下部署许多应用程序,并为所有应用程序提供更深入的上下文,比如

<web>
<web-uri>Pct109.war</web-uri>
<context-root>/Pct109</context-root>
</web>

也就是说,它以http://domanName.org/Pct109,您可以使用/Pct109/参考所有战争文件

显而易见。。。咧嘴笑一旦你弄清楚了。

战争文件是从您部署它们的方式中引用的…不仅仅是从的战争包顶部

快乐之路。