我有一个静态页面,希望有条件地在特定URL上投放。 使用spring- boot,我可以将页面放置在static或public资源目录中,并将它们提供给所有人,但是如果我想限制访问或通过功能标记禁用对它们的访问,那么这是不合适的。 使用模板引擎,我可以将页面作为模板加载,并返回对该视图的引用。但是,我的应用程序非常简单,当我不需要模板引擎时,我不想使用模板引擎。 我希望能够使用控制器来确定是否投放了该网页。控制器返回静态页面的最简单方法是什么?
static
public
我发现从控制器返回静态内容的最简单方法是返回Resource。Resource该类有多种实现,但ClassPathResource对于spring- boot应用程序来说最有意义。 在常规的弹簧引导应用下面的例子将显示src/main/resources/path/to/mypage.html时mycondition()是true和返回404以其他方式。
Resource
ClassPathResource
src/main/resources/path/to/mypage.html
mycondition()
true
@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() {} }