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

标签 java server static-files spark-java

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静态导入,提供一组static file utility methods .
其中之一是 externalLocation(String externalFolder) .
因此,例如,您可以定义您的 Spark 应用程序,并在 init()方法可以定义外部位置:

Spark.staticFiles.externalLocation("[your external path here]");
此位置可以在应用程序的类路径之外。
这已记录在 here .
关于“虚拟”位置:“虚拟”一词表示一个目录,它只是一个 Linux 样式的符号链接(symbolic link)或指向文件系统上某个其他位置的指针。只要您的应用程序有权访问符号链接(symbolic link)/指针的目标,这应该可以正常工作。
(我没有尝试过使用 Windows 快捷方式 - 这些可能不起作用。)

请注意:如果您将外部位置定义为:
staticFiles.externalLocation("public");
那么你会不是 能够访问以下资源:
http://localhost:8080/public/index.html
相反,您将需要使用:
http://localhost:8080/index.html
在这种情况下,public是起点。如果要显式包含 public在您的 URL 中,您需要添加一个名为 public 的子目录:
public/
|----public/
     |-----index.html
     |-----style.css
     |-----etc...
现在这将起作用,正如您在问题中所说的那样:
http://localhost:8080/public/index.html

关于java - Spark Java 在虚拟文件位置提供静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66072420/

相关文章:

java - 字符串数组无法解析为变量

java - 通用 assertThat(ArrayList, hasItems(InstanceOfSomeInterface)) 不工作

c - 如何修改服务器/客户端以将端口号和/或主机作为可选的命令行参数?

python - Django - 无法加载静态 CSS 文件

java - 从父类(super class)中释放已在重写方法中使用的资源

java - Netty 如何使用线程池?

c 中带有 select 的并发服务器 TCP

nginx - 无法在 Centos 上启动 NGINX

python - 如何在 Heroku 中使用 Python webapp2 处理静态文件?

asp.net-core - 重定向到静态文件asp.net core