2016-06-11 38 views
0

私は、JSPファイルを含む単純なJava Webアプリケーションを開発しています。私は、CSSファイルやWEB-INF/classesディレクトリ内のイメージなどのリソースファイルに、結果のWARファイルのコンテキストルートにあるJSPファイルを使用してアクセスしようとしています。WEB-INFフォルダにあるリソースにアクセスする

プロジェクト構造は、Maven War Pluginの使用法の推奨構造に基づいて作成されました。私はこのフォーラムの中で同様の問題に対して提供されたいくつかのソリューションを調べましたが、どれもこの新しい構造のために働いていませんでした。

たとえば、コンテキストルートにあるJSPファイルからWEB-INF/classesディレクトリにあるリソースにアクセスするにはどうすればよいですか?あなたはHTTPを介してこれらのリソースにアクセスしたい場合は example WAR file with the mentioned structure

+0

私はMaven War Pluginで共有しているリンクをチェックすると、WEB-INF/classesディレクトリに画像、CSSファイルなどをパックしています。それは推奨される構造です。 –

答えて

2

、彼らは他の場所でなければなりません - 彼らはWEB-INFにありませんできます。その質問となるでしょう。何度も答えられているので、複数回(この質問の関連する質問リンクを参照してください)。 Java Webアプリケーション WEB-INFの下のリソースをHTTPでアクセス可能にします。

あなたの質問は「推奨される」標準ファイル構造に関するので、あなたがリンクしているドキュメントが誤解を招くような箇所を教えてください: src/main/resourcesにあるリソースはすべてクラスパスになります。 WEB-INF/classesにあります。それは、Webアプリケーションが世界中に利用可能にするディレクトリ上に終わることはありません。ただし、ドキュメントではイメージを使用しています。これは、イメージをWebアプリケーション内で使用できることを示しています。それはできません。クラスローダーを介してアクセスできます。例:SomeClassFromYourWebapp.class.getResourceAsStream()。これは、より一般的には.propertiesファイル、.xmlなどで実行され、実行時にイメージよりも処理されます。

技術的には、JSPでこのコードを使用できるため、「JSPからリソースにアクセスするにはどうすればよいですか」という質問に答えることができます。あなたの質問は、HTTPを介してリソースに対処することを求めていると私は信じています。

そしてへの答えがあること:あなたがsrc/main/webappにHTTPを介して使用可能必要なリソースを移動し、WEB-INFからそれらを保ちます。それ以外の場合は、クラスパス上にのみ存在します。

+0

WEB-INFやクラスパスにリソースを入れ、ここからhttpのためにリソースを提供するのは、まだまだ一般的です。 Springはjspのためにそれを行います。 – user2189998

+1

@ user2189998 for jsp:はい。しかし、あなたは/WEB-INF/index.jspとしてそれらを提供することは決してできません(この回答のポイントもそうですが)。内部リダイレクトの魔法が必要です。 CSSと画像の場合は、理論的には可能ですが、私はそれがCSSや画像の場合には見られませんでした。必要なものがURLのあるリソースであれば、あまりにも面倒です。 –

+0

Olaf Kockはあなたがsrc/main/webappに移動したときにうまくいったと言いました。 –

関連する問題