質問
MVCアプリケーションのコンテキスト(この場合はSpring MVCを使用)で、いくつかの画像パスがDBに保存されている場合。これらをビューに表示するにはどうすればよいですか
それらをロードしてからビューに渡すのはコントローラーの仕事ですか?もしそうなら、これはJSPを使用してSpring MVCでどのように行われますか?
ありがとう
解決
モデルの一部としてビューに渡すのはコントローラーの仕事かもしれませんが、画像の取得を処理するのはサービス層の仕事だと思います。
更新:Juregen Hoellerが、注釈付きコントローラーでそれを行う方法を示しますこちら。
他のヒント
実際の画像の取得方法と、その用途に依存します。
たとえば、画像が第一級の市民である写真共有ウェブサイトを構築している場合、 duffymoに完全に同意しますの答え-それらはサービス層によってロードされ、モデルの一部である必要があります。
一方で、問題の画像が純粋にプレゼンテーション用であり、Webアプリ内で公開画像として利用できる場合(たとえば、プロセスのステータスを赤/黄/緑の光として表示している場合)、ビューで直接レンダリングできます。もちろん、このシナリオでは、実際の画像パスをデータベースに保存するのはかなり奇妙です-代わりに、画像パスはリソースバンドルのどこかに保存されると思います。
後者のアプローチを使用すると、おそらく「ベース」に関連する画像パスがあります。フォルダと完全な画像パスは $ {prefix} / $ {base} / $ {imagePath}
のようなものになります:
-
prefix
は、展開構成に応じて、構成のどこかで明示的に指定するか(たとえば、専用のイメージサーバーがある場合)、または/ context
context
は、webappがデプロイされるパスです(すべてが1つの単純なサーバーから提供される場合、負荷分散などは行われません) -
base
は構成から取得されます(または空にすることもできます) -
imagePath
はモデルから取得したものです
JSPを介した画像パスの直接レンダリングは、上記のアプローチを使用して簡単に行う必要があります。