1.在項(xiàng)目中JSP頁(yè)面輸出流顯示為圖片時(shí),刷新時(shí),報(bào)以下錯(cuò)誤
getOutputStream() has already been called for this response
index.jsp
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<TABLE>
<TR>
<TD></TD>
</TR>
<TR>
<TD><img src="show.jsp"></TD>
</TR>
</TABLE>
</BODY>
</HTML>
show.jsp
<%@ page contentType="text/html; charset=gbk" %>
<%@ page import="java.io.*"%>
<%@ page import="cn.com.hnisi.visio.image.*"%>
<%
VisioDemo v=new VisioDemo();
v.setVisible(false);
try
{
byte[] image = v.getVisio().createPreview(new File("E:/test/test.vsd"));
response.setContentType("image/jpeg");
OutputStream outs = response.getOutputStream();
outs.write(image);
outs.flush();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
%>
出現(xiàn)錯(cuò)誤原因是response的數(shù)據(jù)流沒(méi)有釋放
解決辦法
<%@ page contentType="text/html; charset=gbk" %>
<%@ page import="java.io.*"%>
<%@ page import="cn.com.hnisi.visio.image.*"%>
<%
VisioDemo v=new VisioDemo();
v.setVisible(false);
try
{
byte[] image = v.getVisio().createPreview(new File("E:/test/test.vsd"));
response.setContentType("image/jpeg");
OutputStream outs = response.getOutputStream();
outs.write(image);
outs.flush();
outs=null;
response.flushBuffer();
out.clear();
out = pageContext.pushBody();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
%>