2016-04-28 79 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中好。所以这些文件也可以通过类加载器加载。 –

相关问题