【问题标题】:Where to put static files for Spark Web Framework?Spark Web 框架的静态文件放在哪里?
【发布时间】:2015-03-23 10:27:06
【问题描述】:

尝试使用 Spark Web 框架提供静态文件时,我应该将文件放在哪里?

我无法在网上找到任何东西 - 我开始怀疑我对 Eclipse 和 Java 项目的类路径、相对路径等一无所知。

This paragraph 关于 Spark 中的静态文件指的是/public,但我不知道那会在哪里。使用 windows,Eclipse Luna 和我的项目被转换为使用 Maven。

我已经尝试查看 GitHub 上的代码,但我试图找到它有点超出我的深度。

【问题讨论】:

    标签: java eclipse maven spark-java


    【解决方案1】:

    首先你必须告诉 Spark 在哪里搜索静态文件,如下所示:

    Spark.staticFiles.location("/public");
    

    在 2.5 之前的 Spark 版本中,您应该使用:

    Spark.staticFileLocation("/public");
    

    那么你的项目在资源文件夹下应该有一个public文件夹,像这样

    /src/main/resources/public/style.css

    例如,我在那里添加了一个style.css 文件,因此您应该像这样访问它:

    http://localhost:4567/style.css


    如果你想提供一个非类路径文件夹,那么你应该使用

    Spark.staticFiles.externalLocation("/path/to/dir");
    

    在 2.5 之前的 Spark 版本中,您应该使用:

    Spark.externalStaticFileLocation("/path/to/dir");
    

    【讨论】:

    • @JigarJoshi 你在说什么问题?我的解决方案不适合你吗?
    • 我很快就做出了决定,我试图为我所服务的静态资源设置正确的 mime 类型,我最终使用过滤器为某些静态资源设置了正确的 mime 类型
    • @JigarJoshi 如果您使用staticFileLocation 提供静态文件,那么您不必这样做。如果您使用Spark.get 手动注册获取文件,那么是的,您将必须手动设置标题。
    • 我使用 staticFileLocation 提供 css 文件,但 mime 类型设置不正确
    • @PabloMatiasGomez 当我使用get("/post/:postId", (req, res) ->{...})时,静态文件路径变成http://0.0.0.0:4567/post/css/style.css,但正确的路径应该是http://0.0.0.0:4567/css/style.css
    【解决方案2】:

    我将样式表放在静态内容下方,如下所示:

    staticFileLocation( "/web" );
    /web/
      |-- index.html
      +-- styles/
            +
            +--- default.css
    

    还有 index.html

    ... <link href="styles/default.css" rel="stylesheet"   type="text/css" />
    

    我还有其他生成的 HTML 页面,就像使用 freemarker 一样。他们只是收集路径:

    • /styles/default.css,或
    • localhost:8081/styles/default.css

    显示索引获取它的 CSS 方式。

    来源:https://groups.google.com/d/msg/sparkjava/5vMuK_5GEBU/vh_jHra75u0J

    【讨论】:

      【解决方案3】:
      1. 在 Eclipse 上右键单击您的项目,选择 create New -> Package。给新包起个名字等等。

      2. 将您的静态资源放在该包下,以便我们确定它们在您的类路径下。

      3. 在您的 Main 类colde 中,调用 staticFileLocation("yourpackagename/");

      【讨论】:

        【解决方案4】:
        1. 将您的公共目录放入src/main/resources
        2. Spark.staticFileLocation("/public"); 替换为Spark.staticFileLocation("public");

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-24
          • 1970-01-01
          • 2011-10-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多