【问题标题】:spring-boot - Conditionally serve static content without template enginespring-boot - 在没有模板引擎的情况下有条件地提供静态内容
【发布时间】:2016-06-24 13:14:37
【问题描述】:

我有一个静态页面,我想有条件地在特定 URL 上投放。
使用 spring-boot,我可以将页面放置在 staticpublic 资源目录中并将它们提供给所有人,但如果我想通过功能标志限制访问或禁用对它们的访问,那么这不合适。
使用模板引擎,我可以将页面加载为模板并返回对视图的引用。 但是,我的应用程序相当简单,我不想在不需要模板引擎的情况下使用模板引擎。
我希望能够使用控制器来确定是否提供页面的天气。 让控制器返回静态页面的最简单方法是什么?

【问题讨论】:

  • 创建一个过滤器来控制访问。这也是 Spring Security 的工作原理。

标签: java spring spring-mvc spring-boot


【解决方案1】:

我发现从控制器返回静态内容的最简单方法是返回ResourceResource 类有多种实现,但 ClassPathResource 对 spring-boot 应用程序最有意义。
在常规的 spring-boot 应用程序中,当 mycondition()true 时,以下示例将显示 src/main/resources/path/to/mypage.html,否则返回 404。

@RequestMapping("mypage.html")
public Resource myPage() {
    if(mycondition()) {
        return new ClassPathResource("path/to/mypage.html");
    } else {
        throw new ResourceNotFoundException();
    }
}

@ResponseStatus(HttpStatus.NOT_FOUND)
private static class ResourceNotFoundException extends RuntimeException {
    public ResourceNotFoundException() {}
}

【讨论】:

    猜你喜欢
    • 2015-08-18
    • 1970-01-01
    • 2014-06-12
    • 2011-11-11
    • 1970-01-01
    • 2016-07-14
    • 2019-03-30
    • 2021-10-29
    • 1970-01-01
    相关资源
    最近更新 更多