-2

転送された JSP でいくつかのデータと画像を表示する必要があります

データを表示するために、属性セクションに値を設定しました

request.setAttribute("data", mydata);

ストリーム (InputStream) に画像があり、ファイルとして保存することもできますが、JSP ページに直接ストリーミングするより良い方法があるかどうかを知りたいです。

サーブレットの一時ディレクトリ「javax.servlet.context.tempdir」を使用して保存すると、次の方法でもアクセスできません

<img src="location of the file set in attribute section"/>

他の人が試した好ましい方法はありますか?

Tomcat 7.0.33/Java 7 の使用

4

1 に答える 1

1

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");
    }
}

次に、ページに通常の画像タグを含めることができます。

于 2012-12-05T16:37:39.787 に答える