java - 托管多个静态文件的最佳实践

标签 java file web-applications

<分区>

有时我们必须在我们的项目中保留非常多的小文件(例如同构的智能客户端)。大约有 10k 个小文件。 svn(我不知道 git 如何处理它)、复制、打包等有问题,但这些文件几乎永远不会改变,因为它只是一个外部库。有什么方法可以将它们保存在一个 zip 文件中并告诉 tomcat 从该文件中托管它们?或者他们应该以不同的方式处理?有什么最佳做法吗?

更准确地说。这是我的文件夹结构:

src/main/
     +---webapp/
     |      +---static/    <-- thousand 3rd party's files in this dir
     |
     +---java/

Maven 将使用我的代码和静态文件构建 war,它会工作。但是在 war 开始之前处理这么多文件是一个 PINA。我想要这样的东西:

src/main/
     +---webapp/
     |      +---static.zip    <-- only 1 file
     |
     +---java/

在流行的网络服务器上是否可行?

最佳答案

如果您使用的是 servlet-3.0 网络应用程序,请创建一个 jar 文件并将所有静态资源放在该 jar 文件中的 META-INF/resources 下。然后将这个 jar 文件放在 Web 应用程序的 WEB-INF/lib 中,容器将为您的静态资源提供服务,就好像它们位于 Web 应用程序的根目录中一样。

因此,如果您希望静态资源 foo.hml 的 URL 为

http://localhost/myWebApp/static/foo.html, 

你应该有这个目录/jar 结构:

webapp
  WEB-INF
    lib
      static.jar
        META-INF
          resources
            static
              foo.html

关于java - 托管多个静态文件的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16263432/

相关文章:

java - 不意味着在更改 JSP 页面时重新部署_WHOLE_应用程序的任何使用 Eclipse WTP 的方式

java - 以未知次数重复和连接已知字符串的更优雅方式

java - 应用程序退出时如何结束非守护线程?

c# - 如何解析以下文本文件?

asp.net - Web 应用程序需要 WCF 吗?

java - 如何使用 id - generated_key 从数据库中删除数据

java - 为什么更改整个数组行会产生奇怪的行为?

java - 使用 backstack 时 android.app.Fragment 和 android.support.v4.app.Fragment 的不同行为

file - Gradle Java 构建 - 全局 init.d 通用 gradle 文件 - 找不到方法测试()

html - 如何在 Firefox 中设置文件输入字段的样式?