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