2016-06-24 11 views
1

私は条件付きで特定のURLにサービスを提供する静的ページを持っています。
spring-bootでは、staticまたはpublicリソースディレクトリにページを配置して、すべての人にサービスを提供できますが、機能フラグを使用してアクセスを制限したり、アクセスを無効にしたい場合は適切ではありません。
テンプレートエンジンを使用して、ページをテンプレートとしてロードし、ビューへの参照を返すことができます。 しかし、私のアプリケーションはかなりシンプルで、テンプレートエンジンを必要としないときはテンプレートエンジンを利用したくありません。
コントローラを使用して、ページが提供されている天気を判断できるようにしたいと思います。 コントローラが静的ページを返す最も簡単な方法は何ですか?spring-boot - テンプレートエンジンなしで条件付きで静的コンテンツを配信する

+0

アクセスを制御するフィルタを作成します。それはSpring Securityの仕組みです。 – Andreas

答えて

1

コントローラから静的コンテンツを返す最も簡単な方法は、Resourceを返すことです。 Resourceクラスは複数実装されていますが、ClassPathResourceはスプリングブートアプリケーションに最も適しています。
通常のスプリングブートアプリケーションでは、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() {} 
} 
関連する問題