使用jetty服务器的HTTP错误404

时间:2011-09-17 13:18:18

标签: jetty classpath maven-jetty-plugin

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

> 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"

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

mvn jetty:run

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

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

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

1 个答案:

答案 0 :(得分:1)

您的src不正确。 Java Servlet规范明确声明 WEB-INF目录下的任何文档都不可用于Web服务器。您需要将JavaScript文件放在其外面。

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

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

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

WEB-INF目录的设计完全是为了防止用户访问他们无法访问的文件,例如classeslib目录或web.xml部署描述符。