【问题标题】:Spark Java serve static file at virtual file locationSpark Java 在虚拟文件位置提供静态文件
【发布时间】:2021-05-10 08:02:30
【问题描述】:

Express 能够在不同的虚拟位置提供静态文件:

app.use('/static', express.static('public'))

但是,我在使用 Spark Java 的服务器上使用 Java。我知道如何提供静态文件,但 Spark Java 甚至可以在虚拟位置提供静态文件吗?如果可能,怎么做?我已经搜索了一段时间,但我找到的所有教程都只是告诉我如何提供静态文件,而不是在虚拟位置提供静态文件。

编辑:“虚拟位置”的解释: 让我们假设这是当前目录:

public/
|-----index.html
|-----style.css
|-----etc...

然后,我们可以得到一个带有http://localhost:8080/public/index.html的网页
但是,我想更改它,以便我可以使用它获取网页 http://localhost:8080/somedir/virtual/pathindex.html

【问题讨论】:

  • 可能是由 GUID 定义的路径吗?
  • @aran 更新问题

标签: java server static-files spark-java


【解决方案1】:

使用 Spark-Java 时,Spark 类包含 staticFiles 静态导入,它提供了一组 static file utility methods

其中一个是externalLocation(String externalFolder)

因此,例如,您可以定义 Spark 应用程序,并在 init() 方法中定义外部位置:

Spark.staticFiles.externalLocation("[your external path here]");

此位置可以在应用程序的类路径之外。

这已记录在here

关于“虚拟”位置:“虚拟”一词表示一个目录,它只是一个 Linux 样式的符号链接或指向文件系统上某个其他位置的指针。只要您的应用程序有权访问符号链接/指针的目标,这应该可以正常工作。

我没有尝试过使用 Windows 快捷方式 - 这些可能不起作用。


请注意:如果您将外部位置定义为:

staticFiles.externalLocation("public");

那么您将无法访问以下位置的资源:

http://localhost:8080/public/index.html

相反,您需要使用:

http://localhost:8080/index.html

在这种情况下,public 是起点。如果您想在 URL 中明确包含 public,则需要添加一个名为 public 的子目录:

public/
|----public/
     |-----index.html
     |-----style.css
     |-----etc...

现在这将起作用,正如您在问题中所说的那样:

http://localhost:8080/public/index.html

【讨论】:

  • 所以,不幸的是,我想没有办法务实地做到这一点,你必须使用符号链接。没关系,谢谢!
  • 感谢您的反馈。澄清一下 - 您的意思是“以编程方式进行”吗?换句话说,您想在应用程序启动后动态更改public 的位置?如果这是目标,那么您是正确的,没有办法做到这一点。一旦定义了静态文件位置,就不能在应用程序运行时更改它。如果我误解了您的评论,请纠正我。
猜你喜欢
  • 2013-08-22
  • 2017-01-24
  • 2016-10-25
  • 2016-10-14
  • 2018-07-26
  • 2014-01-26
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多