默认情况下,静态文件位于WEB-INF
目录中(可以/images/logo.png
访问):
foo.war
WEB-INF
web.xml
images
logo.png
我想更改结构并使用此结构(仍可以/images/logo.png
访问):
foo.war
WEB-INF
web.xml
static
images
logo.png
如何使用web.xml
?
答案 0 :(得分:3)
如果您使用HTTP GET直接访问WEB-INF
下的文件,容器将会发出404 NOT FOUND错误消息。
但是现在,你说你可以通过WEB-INF/images/logo.png
访问/images/logo.png
,所以我认为你的web应用程序最有可能通过一些URLRewriteFilter mechainsim或servlet级别的一些Java代码来实现这个结果(例如过滤器),或者由您的Web应用程序框架。我建议你检查你的网络应用程序,看看现在这个机制导致了什么机制,并相应地配置你想要的结果。
答案 1 :(得分:2)
根据http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WCC3.html,
WAR具有特定目录 结构体。顶级目录 WAR是文档的根 应用。文档根目录是 其中JSP页面,客户端类 和档案,以及静态Web资源 存储。
文档根目录包含一个 子目录名为WEB-INF,其中 包含以下文件和 目录:
web.xml:Web应用程序 部署描述符标记库 描述符文件(请参阅标记库 描述符)类:一个目录 包含服务器端类: servlet,实用程序类和 JavaBeans组件lib:A 包含JAR存档的目录 库(标签库和任何 被称为的实用程序库 服务器端类)。
您也可以创建 特定于应用程序的子目录 (即包目录) 无论是文档根还是文档 WEB-INF / classes目录。
因此默认行为是您正在寻找的。您的文档根目录是否设置错误,无法提供WEB-INF中的内容?
答案 2 :(得分:1)
您可以使用过滤器或URLRewriteFilter将/images/*
指向/static/images/*
。
如果您只希望文件夹结构为/static/images
用于开发时组织目的,但部署URL为/images
- 您可能需要更改构建脚本以复制/static/**
} /
。
我个人不会打扰我的静态文件是否被称为/static/images
或/images
- 因为它们会在我的代码(仅)中被引用,我已经控制了它。
如果您在CSS中使用这些文件,那就是为什么您希望路径保持不变...更好地保留/static/css/images
下的图像并在此处使用CSS中引用的图像。这样,无论你在哪里移动CSS文件夹,都不会破坏你的CSS。