[英]How to change location of static file in WAR archive?
默认情况下 static 文件位于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
做到这一点?
如果您使用 HTTP GET 直接访问WEB-INF
下的文件,容器将返回 404 NOT FOUND 错误。
但是现在,您说您可以通过/images/logo.png
访问WEB-INF/images/logo.png
,所以我认为您的 web 应用程序很可能通过某些 URLRewriteFilter mechainsim 或某些 Java 代码在 servlet 级别实现此结果(例如过滤器),或通过您的 web 应用程序的框架。 我建议您检查您的 web 应用程序,看看现在是什么机制导致了这种行为,并相应地配置为您想要的结果。
根据http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WCC3.html ,:
WAR 具有特定的目录结构。 WAR 的顶级目录是应用程序的文档根目录。 文档根目录是 JSP 页面、客户端类和档案以及 static Web 资源的存储位置。
文档根目录包含一个名为 WEB-INF 的子目录,其中包含以下文件和目录:
web.xml: The Web application deployment descriptor Tag library descriptor files (see Tag Library Descriptors) classes: A directory that contains server-side classes: servlets, utility classes, and JavaBeans components lib: A directory that contains JAR archives of libraries (tag库和由服务器端类调用的任何实用程序库)。
您还可以在文档根目录或 WEB-INF/classes 目录中创建特定于应用程序的子目录(即 package 目录)。
因此,默认行为就是您要寻找的。 您的文档根设置是否错误地从 WEB-INF 提供内容?
您可以使用过滤器或URLRewriteFilter将/images/*
指向/static/images/*
。
如果您只是希望您的文件夹结构为/static/images
用于开发时间组织目的,但部署 URL 为/images
- 您可能需要更改构建脚本以将/static/**
复制到/
。
我个人不会打扰我的 static 文件是否被称为/static/images
或/images
- 因为它们将在我的代码中(仅)被引用,我可以控制它。
如果您在 CSS 中使用这些文件,这就是为什么您希望路径保持不变...最好将图像保存在/static/css/images
下,并在此处使用 CSS 中引用的图像。 这样,无论您将 CSS 文件夹移动到何处,都不会破坏您的 CSS。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.