Spark Java 在虚拟文件位置提供静态文件
Spark Java serve static file at virtual file location
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
当使用 Spark-Java 时,Spark
class 包含 staticFiles
静态导入,它提供了一组 static file utility methods.
其中之一是 externalLocation(String externalFolder)
。
因此,例如,您可以定义您的 Spark 应用程序,并且在 init()
方法中您可以定义外部位置:
Spark.staticFiles.externalLocation("[your external path here]");
此位置可以在应用程序的 class 路径之外。
这已记录在案 here。
关于“虚拟”位置:“虚拟”一词表示目录只是一个 Linux 样式的符号链接或指向文件系统上其他位置的指针。只要您的应用程序有权访问 symlink/pointer 的目标,这应该可以正常工作。
(我还没有尝试使用 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
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
当使用 Spark-Java 时,Spark
class 包含 staticFiles
静态导入,它提供了一组 static file utility methods.
其中之一是 externalLocation(String externalFolder)
。
因此,例如,您可以定义您的 Spark 应用程序,并且在 init()
方法中您可以定义外部位置:
Spark.staticFiles.externalLocation("[your external path here]");
此位置可以在应用程序的 class 路径之外。
这已记录在案 here。
关于“虚拟”位置:“虚拟”一词表示目录只是一个 Linux 样式的符号链接或指向文件系统上其他位置的指针。只要您的应用程序有权访问 symlink/pointer 的目标,这应该可以正常工作。
(我还没有尝试使用 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