我可以为 spring 中的所有页面做一个 GetMapping 吗

Can I do one GetMapping for all pages in spring

我对 Spring 引导中的 @GetMapping 有疑问。

如果我有 20 个静态网页作为 .html 文件。我可以只使用一个 @GetMapping 来获取每一页吗?

例如:

@GetMapping("/{static_webpages}")
public String getWeb() { return "{static_webpages}";}

然后,当路径变为/page1时,将获取第1页,依此类推。

正在从URL中提取网页名称。

通过向您的方法添加参数并使用 @PathVariable 注释对其进行注释,您可以提取网页名称。

    @GetMapping("/{static_webpage}")
    public String getWeb(@PathVariable("static_webpage") String webpage) {
        ...
    }

Return 网页而不是 return 字符串

您可能不希望 return 以字符串形式显示网页内容。
通过使用 ModelAndView 对象作为方法的 return 类型,您的方法将 return 一个合适的网页。

    @GetMapping("/{static_webpage}")
    public ModelAndView getWeb(@PathVariable("static_webpage") String webpage) {
        ...
    }

现在我们可以构建 ModelAndView 对象以重定向到给定的网页。

    @GetMapping("/{static_webpage}")
    public ModelAndView getWeb(@PathVariable("static_webpage") String static_webpage) {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("webpages/" + static_webpage);
        return modelAndView;
    }

在此示例中,静态网页保存在 resources/static/webpages 目录中,以便将它们分组到一个目录中。
如果您不想将它们分组到一个目录中,您可以只会将它们存储在 resources/static/,但您必须小心,因为 ModelAndView 对象随后会尝试加载自己的剩余端点,这会导致错误。

[可选] 删除 url

中所需的 html 扩展

在您的 application.properties 中使用 spring.mvc.view.suffix 属性 您可以提供一个后缀,该后缀附加到您创建的每个 ModelAndView 网页上。

spring.mvc.view.suffix = .html

这意味着不必访问网页 /myexamplepage.html 您只需要访问 /myexamplepage.

资源