2016-04-28 82 views
1

我對Intellij沒有什麼問題。我試圖用Intellij中的maven在Java和Spring中創建一個簡單的應用程序。我的項目結構如下:在intellij中獲取位置資源文件夾

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

問題是,當我嘗試添加到dispatcher-servlet.xml行:

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

我的IntelliJ沒有看到該文件夾​​的資源,只有WEB-INF。我創造了這樣的項目:

  1. 與Maven
  2. 打開模塊結構創建項目
  3. 添加新的模塊 - Web應用程序

我如何才能訪問的形式對dispathcer-servlet.xmlresoucres?還是我使用錯誤的項目結構?

+1

'位置=「/資源/'並不意味着'src/main/resources'。它實際上是'src/main/resources/resources'。 –

+0

沒有任何工作,即使我粘貼從光盤到文件夾資源的全部路徑,如('location =「E:/ Java/MyProject/src/main/resources「') – HSUser

+0

」我的intellij沒有看到文件夾資源「是什麼意思? –

回答

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

該行表示:

與由/resources開始的一條路徑每個HTTP請求,請在部署Web應用程序查找文件的位置/resources/下。

您的web應用程序中沒有任何名爲資源的文件夾。您所擁有的只是您的Maven項目結構中的src/main /資源。按照Maven的慣例,那些文件最終會出現在classpath中(即在webapp中的WEB-INF/classes下)。

因此,創建一個資源文件夾下的web應用程序,或者把你的文件src/main/resources/foo下,並配置Spring尋找在classpath資源,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能夠使用ClassLoader加載類。 ClassLoader在特定位置查找類。每個webapp都有它自己的類加載器,它從WEB-INF /類加載類,並直接加載WEB-INF/lib下的所有jar。這由servlet規範指定。當Maven構建一個web應用程序時,它會將src/main/java下的所有Java文件編譯成以WEB-INF/classes結尾的.class文件,並將src/main/resources下的所有文件複製到WEB-INF/classes中好。所以這些文件也可以通過類加載器加載。 –

相關問題