在使用Spark Web框架来服务静态文件时,我应该把文件放在哪里?
我在网上找不到任何相关信息 - 我开始怀疑自己对于类路径、相对路径等Eclipse和Java项目的知识是否存在问题。
Spark关于静态文件的这段话中提到了/public
,但我不知道那个地方在哪里。我使用的是Windows操作系统,Eclipse Luna作为IDE,并且我的项目已经转换成使用Maven构建。
我尝试查看GitHub上的代码,但我在尝试寻找时有些力不从心。
在使用Spark Web框架来服务静态文件时,我应该把文件放在哪里?
我在网上找不到任何相关信息 - 我开始怀疑自己对于类路径、相对路径等Eclipse和Java项目的知识是否存在问题。
Spark关于静态文件的这段话中提到了/public
,但我不知道那个地方在哪里。我使用的是Windows操作系统,Eclipse Luna作为IDE,并且我的项目已经转换成使用Maven构建。
我尝试查看GitHub上的代码,但我在尝试寻找时有些力不从心。
首先,您需要告诉Spark在哪里搜索静态文件,如下所示:
Spark.staticFiles.location("/public");
在Spark 2.5之前的版本中,您应该使用:
Spark.staticFileLocation("/public");
那么您的项目应该在资源文件夹下有一个名为public
的文件夹,就像这样:
/src/main/resources/public/style.css
例如,我在那里添加了一个style.css
文件,那么您应该按照以下方式访问它:
http://localhost:4567/style.css
如果您想要提供一个非类路径(non-classpath)文件夹,则应使用:
Spark.staticFiles.externalLocation("/path/to/dir");
在Spark 2.5以前的版本中,您应该使用:
Spark.externalStaticFileLocation("/path/to/dir");
:
staticFileLocation( "/web" );
/web/
|-- index.html
+-- styles/
+
+--- default.css
以及index.html
... <link href="styles/default.css" rel="stylesheet" type="text/css" />
在Eclipse中右键单击您的项目,选择创建新的->包。给新包一个名称等。
将静态资源放置在该包下,以确保它们位于类路径下。
src/main/resources
Spark.staticFileLocation("/public");
替换为 Spark.staticFileLocation("public");
staticFileLocation
来提供静态文件,那么你就不需要这样做。如果你手动注册一个带有Spark.get
的 GET 请求来提供文件,那么是的,你需要手动设置标头。 - Pablo Matias Gomezget("/post/:postId", (req, res) ->{...})
时,静态文件路径变成了这样:http://0.0.0.0:4567/post/css/style.css
,但正确的路径应该是http://0.0.0.0:4567/css/style.css
。 - L. YanJun