使用 Java Spark 如何发送 html 文件作为响应

With Java Spark how do I send a html file as a repsonse

如何使用 spark return 现有页面

我有一个示例,我只是 return 一些文本

import static spark.Spark.*;

public class HelloWorld {
    public static void main(String[] args) {
        get("/hello", (req, res) -> "Hello World");
    }
}

我改成了

import spark.Service;
import static spark.Spark.*;

public class HelloWorld {
    public static void main(String[] args) {
        staticFiles.externalLocation("C:\HtmlFolder\"); // Static files
        init();
        get("/hello", (req, res) -> "Report00001.html");
    }
}

我希望它显示 HtmlFolder\Report00001.hml 的内容,但它只显示 Report0001.html

我看不到任何示例说明如何执行此操作

因此,如果我在 C:\HtmlFolder\ 中放置一个 index.html,那么当在 http://localhost:4567/ 处打开浏览器时它现在会显示,但我看不到如何为获取请求进行映射以显示其他文件

好像

get("/hello", (req, res) -> "Report00001.html");

returns 单个字符串。如果该字符串应该是一个文件 - 您可能必须 打开 文件,收集其内容,然后 return 该内容作为字符串。

我想 C:\HtmlFolder\ 不在你的类路径中。

要提供外部资源(在类路径之外),您需要使用 staticFiles.externalLocation() + System.getProperty()

示例:

staticFiles.externalLocation(System.getProperty("myDir"));

如果您需要了解更多信息,请勾选 Spark Static Files Documenation

已编辑:

如上所述配置外部位置,然后在您的 get 中执行类似

的操作

get("/hello", (req, res) -> {res.redirect("/Report00001.html");});

(我现在不确定应该是"/Report00001.html"还是"Report00001.html"

静态内容只能使用您在原始问题中提到的实际文件的 URL 来提供。如果要将此静态文件映射到特定端点,则需要以编程方式读取文件内容和 return 字符串。

另一种方法是实现您自己的模板引擎,该引擎仅 return 包含 HTML 文件的内容,尽管这可能有点矫枉过正,但应该足够简单。