我有一个具有以下结构的Web应用程序:
src
+ main
+-+ java
+ resources
+ webapp
+-+ WEB-INF
+ static
静态目录是org.apache.catalina.servlets.DefaultServlet
的服务器,否则由应用程序提供服务。我想要实现的是从应用程序访问静态目录。但是,一旦它部署在服务器上,该目录似乎“丢失” - 我无法在相对路径(new File()
)和类路径(新ClassPathResource()
)中访问它。我可以看到,target
目录中缺少该目录,这可能是正确的,但我不知道我能做些什么。
感谢。
修改
static
是WEB-INF的兄弟,而不是它的孩子。答案 0 :(得分:2)
我很确定类路径不能看到WEB-INF,你必须把它放在webapp文件夹中。更好的是,您可能希望使用mvc:resources标记。
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html
搜索mvc:资源以进行解释。
修改强>
如果将资源放在src / main / resources中,它们应该可用于ClassPathResource
答案 1 :(得分:1)
没有标准化的方法来访问WEB-INF下存储的文件。 WEB-INF文件夹的精神在于它包含框架(容器/服务器)读取的数据。它不被视为容器用户(您)直接读取的数据存储位置。根据您使用的容器软件(和版本)(Tomcat与JBoss vs. WebSphere与WebLogic等),您可能能够克服自己的方式进入WEB-INF,但它不能跨容器移植,所以我不推荐它。
考虑将文件放在其他位置,例如在类路径中或不是WEB-INF的webapp的子文件夹中。