我的项目中有以下文件夹结构。
> 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
答案 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
目录的设计完全是为了防止用户访问他们无法访问的文件,例如classes
,lib
目录或web.xml
部署描述符。