2016-04-28 13 views
1

私はIntellijにはほとんど問題がありません。私はIntellijでmavenを使ってJavaとSpringで簡単なアプリケーションを作成しようとしました。私のプロジェクト構造は次のようになります。インテリジェント内のリソースフォルダへのアクセス

<mvc:resources mapping="/resources/**" location="/resources/" /> 

私IntelliJのは、フォルダのリソースを参照してくださいだけWEB-INFいけない:私はdispatcher-servlet.xml行に追加しようとすると、

MyProject: 
|--src 
| |--main 
| | |--java 
| | |--resources 
| | |--web 
| | | |--WEB-INF 
| | | | |--dispatcher-servlet.xml 
| | | | |--web.xml 
| |--test 

問題があります。 - Webアプリケーションを

私はresoucresフォルダへのアクセスフォームdispathcer-servlet.xmlを取得できますか

  1. のmaven
  2. オープンモジュール構造でプロジェクトを作成します。新しいモジュールを追加します。私はこのようなプロジェクトが作成されましたか?あるいは私は間違ったプロジェクト構造を使用しましたか?

+1

'場所=" /リソース/ 'という意味ではありません –

+0

( 'location =" E:/ Java/MyProject/src "のように、ディスクからフォルダへの全パスを貼り付けても、何も動作しません。/main/resources "') – HSUser

+0

「私のintellijがフォルダのリソースを参照していません」ということは何ですか? –

答えて

1
<mvc:resources mapping="/resources/**" location="/resources/" /> 

その行の意味:

/resourcesで始まるパスを持つすべてのHTTP要求のために、展開Webアプリケーション内の場所/resources/下のファイルを探しに行きます。

あなたのwebappには、リソースという名前のフォルダはありません。あなたが持っているのは、Mavenプロジェクトの構造のsrc/main/resourcesだけです。そこにあるファイルは、Mavenの規則に従って、クラスパス(つまり、WebアプリケーションのWEB-INF/classesの下)にあります。だから、

、Webアプリケーションの下でリソースのフォルダを作成し、またはsrc/main/resources/fooの下であなたのファイルを入れてfooの下で、クラスパス内のリソースを探すために春を設定します。

<mvc:resources mapping="/resources/**" location="classpath:/foo/" /> 
+0

classpathの詳細、何がどのように使用されているのか、とりわけこれがなぜ動作しないのかを伝えることができます 'location =" classpath:/ resources/"' – HSUser

+0

intellijが何か提案していない場合、設定は機能しません。 'src/main/resources/resources'ディレクトリや' WEB-INF/resources'ディレクトリに何かを置くと 'all.css'となり、' localhost:8080/resources/all.css'を通してそのファイルにアクセスすることができます –

+0

Java is is ClassLoaderを使用してクラスをロードすることができます。 ClassLoaderは特定の場所にあるクラスを探します。各Webアプリケーションには独自のクラスローダがあり、WEB-INF/classesのクラスとWEB-INF/libの下のすべてのjarsをロードします。これはサーブレットの仕様によって指定されます。 MavenがWebアプリケーションをビルドすると、src/main/javaのすべてのJavaファイルがWEB-INF/classesで終わる.classファイルにコンパイルされ、src/main/resourcesのすべてのファイルがWEB-INF/classesにコピーされます。よくしたがって、これらのファイルはクラスローダによってもロード可能です。 –

関連する問題