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"

プロジェクトをデプロイするために jetty サーバーを使用しています。それを実行するために私は使用しています

mvn jetty:run

スクリプト ファイルを webapp フォルダーに直接配置し、次の方法でスクリプトを含めると、完全に正常に動作します。

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

しかし、すべてのスクリプトを js フォルダーに配置して、プロジェクトのフォルダー構造を維持したいと考えています。jettyサーバーがwebappフォルダーにのみあるファイルを取得する理由を教えてください。私はwindows7を使用しています

4

1 に答える 1

1

あなたsrcは間違っています。Java サーブレットの仕様では、ディレクトリの下のドキュメントWEB-INFは Web サーバーで使用できないと明示的に述べています。JavaScript ファイルをその外側に配置する必要があります。

通常、jspファイルは直接アクセスされないため、その中に配置します。それらは、サーブレットまたは Java のその他の Web 開発フレームワークを介してアクセスされます。

フォルダー構造を維持したい場合は、jsフォルダーを Web アーカイブ ルートに置くだけです。

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

WEB-INFclassesディレクトリは、libディレクトリ、web.xmlデプロイメント記述子など、アクセスしてはならないファイルにユーザーがアクセスできないように設計されています。

于 2011-09-17T13:24:47.940 に答える