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

Spark Java在虚拟文件位置提供静态文件,java,server,static-files,spark-java,Java,Server,Static Files,Spark Java,Express能够在不同的虚拟位置提供静态文件: app.use('/static',express.static('public')) 然而,我正在使用Spark Java为我的服务器使用Java。我知道如何提供静态文件,但Spark Java是否可以在虚拟位置提供静态文件?如果可能,怎么做?我已经搜索了一段时间,但是我找到的所有教程都只是告诉我如何提供静态文件,而不是在虚拟位置提供静态文件 编辑:“虚拟位置”的解释: 假设这是当前目录: 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
类包含
staticFiles
静态导入,它提供了一组

其中之一是
externalLocation(字符串externalFolder)

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

Spark.staticFiles.externalLocation(“[此处的外部路径]”);
此位置可以在应用程序的类路径之外

这是有案可查的

关于“虚拟”位置:“虚拟”一词表示一个目录,它只是一个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

它可能是一个由GUID定义的路径吗?@aran更新了问题,所以,不幸的是,我想没有实用的方法,你必须使用符号链接。没关系,谢谢!谢谢你的反馈。只是想澄清一下——你是说“以编程方式”吗?换句话说,您想在应用程序启动后动态更改
public
的位置吗?如果这是目标,那么你是正确的,没有办法做到这一点。一旦定义了静态文件位置,就不能在应用程序运行时对其进行更改。如果我误解了你的评论,请纠正我