1

我的项目中有以下文件夹结构。

> src/
>>main/
>>>webapp/
>>>>WEB_INF/
>>>>>pages/
>>>>>>js/

我所有的脚本文件都位于 js 文件夹中,我的 jsp 页面位于 pages 文件夹中。为了在我的 jsp 页面中包含 abc.js 脚本,我编写了以下行

<script type="text/javascript" src="/WEB-INF/pages/js/abc.js"></script>

但我收到以下错误

"NetworkError: 404 Not Found - http://localhost:8080/WEB-INF/pages/js/abc.js"

我正在使用码头服务器来部署我的项目。为了运行它,我正在使用

mvn jetty:run

如果我将我的脚本文件直接放在 webapp 文件夹中并以下列方式包含脚本,那么它工作得很好。

<script type="text/javascript" src="abc.js"></script>

但我想通过将所有脚本放在 js 文件夹中来维护我的项目的文件夹结构。有人可以告诉我为什么码头服务器正在获取仅位于 webapp 文件夹中的文件吗?我正在使用windows7

4

1 回答 1

1

src的不正确。Java Servlet 规范明确指出,目录下的任何文档WEB-INF都不可用于网络服务器。您需要将 JavaScript 文件放在它之外。

通常,您将jsp文件放在其中,因为它们不是直接访问的。它们是通过Servlet或 Java 中的任何其他 Web 开发框架来访问的。

如果您想维护您的文件夹结构,只需将您的js文件夹放在网络存档根目录中:

webapp/
   js
   WEB-INF/
       classes/
       lib/
       pages/
       web-xml

WEB-INFdirectory 旨在防止用户访问他们不应访问的文件,例如classes目录libweb.xml部署描述符。

于 2011-09-17T13:24:47.940 回答