繁体   English   中英

如何更改 WAR 存档中 static 文件的位置?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM