Spark Java 在虚拟文件位置提供静态文件

Rui*_* Li 5 java static-files spark-java server

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

app.use('/static', express.static('public'))
Run Code Online (Sandbox Code Playgroud)

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

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

public/
|-----index.html
|-----style.css
|-----etc...
Run Code Online (Sandbox Code Playgroud)

然后,我们可以http://localhost:8080/public/index.html
http://localhost:8080/somedir/virtual/pathindex.html

and*_*mes 1

使用 Spark-Java 时,该类Spark包含staticFiles静态导入,它提供了一组静态文件实用方法

其中之一是externalLocation(String externalFolder)

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

Spark.staticFiles.externalLocation("[your external path here]");
Run Code Online (Sandbox Code Playgroud)

该位置可以位于应用程序的类路径之外。

此处记录了这一点。

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

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


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

staticFiles.externalLocation("public");
Run Code Online (Sandbox Code Playgroud)

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

http://localhost:8080/public/index.html
Run Code Online (Sandbox Code Playgroud)

相反,您将需要使用:

http://localhost:8080/index.html
Run Code Online (Sandbox Code Playgroud)

在本例中,public是起点。如果您想明确包含public在 URL 中,则需要添加一个名为 的子目录public

public/
|----public/
     |-----index.html
     |-----style.css
     |-----etc...
Run Code Online (Sandbox Code Playgroud)

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

http://localhost:8080/public/index.html
Run Code Online (Sandbox Code Playgroud)