私はかなり標準的なSpring 3.0.7 Webアプリを持っています
構造はこんな感じ
WebContent/
resources/
myStaticConent/
WEB-INF/
views/
myProtectedContent/
静的コンテンツの構成を使用して<mvc:resources>
おり、コントローラーは WEB-INF/views から InternalViewResolver を使用してビューを取得します
現在、WEB-INF の保護されたディレクトリから非 JSP コンテンツ (JPG、PNG、HTML など) を返す必要があります。
そのため、ユーザーは http:myWebApp/myProtectedContent のような URL を入力し、保護されたコンテンツ コントローラーをヒットする可能性があります。
@Controller
public class HelloWorldController {
@RequestMapping(value="/myProtectedContent")
public String index() {
return "myjpg.jpg";
}
}
基本的に、ビューと同じように条件付きでファイルを提供したいと考えています。これを行う方法を知っている人はいますか?
ここで他の方法のいくつかを見ました。Inputstream を使用したストリーミングは、本質的に静的なファイルにはやり過ぎのようです。別の「ビュー」タイプを登録できますか? これを (Web ブラウザー側から) 標準の http 要求応答 (現在のビューの実装など) のように表示する必要があります。
ResourceBundleResolver のような Spring の「その他の」ビュー リゾルバーよりもファイル アクセス メソッドを使用する方がよい理由がない限り、独自のファイル処理メソッドを発明することは本当に避けたいと思います。
したがって、要件は、jsp でラップしたり、JSTL ビューでファイルを解釈したりせずに、WEB-INF 内から可変ファイル タイプ (jpg、png、html) の http 要求に条件付きで応答することです。ファイルの名前は既知で静的です。コントローラーは、独自のビジネス ロジックに基づいてファイル名を決定します。