HTTP では画像自体をストリーミングすることはできませんが、 から にデータをパイプすることでこれを実現できInputStream
ますHttpServletResponse.getOutputStream()
。
次のような画像ファイルにマップされたサーブレットを使用できます...
<servlet>
<servlet-name>ImgServlet</servlet-name>
<servlet-class>ImgServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ImgServlet</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
そして、サーブレット クラス自体が、画像データ ストリームをファイルに保存することなく処理できます。何かのようなもの...
class ImgServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String imageName = request.getRequestURI();
InputStream data = service.lookUpImage(imageName); //whatever
IOUtils.copy(data, response.getOutputStream()); // Apache Commons IO
response.setContentType("image/jpeg");
}
}
次に、ページに通常の画像タグを含めることができます。