//已知一个Blob类型的photo,要在jsp页面显示所对应的图片
public void showPhoto(){
InputStream is = null;
OutputStream os = null;
byte[] buffer = null;
//get response
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("image/jpeg");
try{
// if(examinee != null){
// System.out.println("examinee:"+examinee);//examinee是该方法所在的类的属性。
// HibernateSessionFactory.getSession().refresh(examinee, LockMode.WRITE);
// }
is = photo.getBinaryStream();//就是在这里报的错。photo是Blob类型
os = response.getOutputStream();
buffer = new byte[1024];
int bytesRead = 0;
while((bytesRead = is.read(buffer)) != -1){
os.write(buffer);
System.out.println("hepeng:outputStream writes "+bytesRead+" bytes!");
}
response.flushBuffer();
os.close();
is.close();
}
catch(SQLException e){
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
}
报错信息:
java.sql.SQLException: could not reset reader
at org.hibernate.lob.BlobImpl.getBinaryStream(BlobImpl.java:106)
at org.hibernate.lob.SerializableBlob.getBinaryStream(SerializableBlob.java:62)
at com.hepeng.javabean.UserInfo.showPhoto(UserInfo.java:136)
at org.apache.jsp.registerSuccess_jsp._jspService(registerSuccess_jsp.java:93)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:139)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
..............................