spring-boot - 有条件地提供没有模板引擎的静态内容

时间:2016-06-24 05:14:38

标签: java spring spring-mvc spring-boot

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

1 个答案:

答案 0 :(得分:1)

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