Spring mvc コントローラーを使用して動的に画像を生成しようとしています。
@Controller
@RequestMapping("/")
public String generateMik(final HttpServletResponse response){
...
BufferdImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
...
response.setContentType("image/png");
try {
OutputStream os = response.getOutputStream();
ImageIO.write(buffer, "png", os);
os.flush();
os.close();
...
}
そして、私はこの写真を .jsp で表示します:
<img src="picture" id="picture">
すべて正常に動作し、ブラウザに画像が表示されますが、例外が発生し、通常の理由でこの問題を解決する方法がわかりません (この例外をキャッチしたくありません)。
org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:626)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:215)
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:190)
...
そして私の質問は、おそらく簡単な方法で動的画像を生成するにはどうすればよいですか? 写真を一時的に保存したくありません。たぶん、outputStream をモデル化し、jsp で何らかの魔法の方法で表示しますか?