我在从Oracle数据库中取出图片在jsp页面进行显示时出了错,但图片能在jsp中正常显示,各位大侠帮我看看是哪出的错,怎么改?
代码:package servlet;import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class pictureDisplay extends HttpServlet { /**
 * Constructor of the object.
 */
public pictureDisplay() {
super();
} /**
 * Destruction of the servlet. <br>
 */
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
} /**
 * The doGet method of the servlet. <br>
 *
 * This method is called when a form has its tag value method equals to get.
 * 
 * @param request the request send by the client to the server
 * @param response the response send by the server to the client
 * @throws ServletException if an error occurred
 * @throws IOException if an error occurred
 */
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { oracle.sql.BLOB blob1 = null;

Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    InputStream inputimage1 = null;
response.setContentType("image/gif"); 

int readLength=0;     try {
Class.forName("oracle.jdbc.driver.OracleDriver");
//建立数据 库连接!
System.out.println("<classok");
conn =DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:policetc", "policetc", "admin");
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
conn.setAutoCommit(false);
System.out.println("连接图片数据库成功");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


try {
String sqlupdate = "select * from PICTURE_TEST where PICTUREID= " + 1 ;

System.out.println("start select");

rs = stmt.executeQuery(sqlupdate);

while (rs.next()) {
blob1 = (oracle.sql.BLOB) ((oracle.jdbc.driver.OracleResultSet) rs).getBLOB("PICTURE");
                inputimage1 =blob1.getBinaryStream();
                System.out.println(inputimage1);
            }
System.out.println("displayover");

int v=inputimage1.available();


System.out.println("图片大小为"+v);

byte[] image=new byte[10000000];

System.out.println("<1");

ServletOutputStream out1=response.getOutputStream(); 

System.out.println("<2");

while((readLength = inputimage1.read(image))!=-1){

             
                
                System.out.println("<3");
                
                out1.write(image, 0, readLength);
                System.out.println("<4");
                System.out.println(readLength);
            }

System.out.println("<6");
//out1.flush();
            //out1.close();
conn.close();
stmt.close();
rs.close();
System.out.println("pictureok");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} /**
 * The doPost method of the servlet. <br>
 *
 * This method is called when a form has its tag value method equals to post.
 * 
 * @param request the request send by the client to the server
 * @param response the response send by the server to the client
 * @throws ServletException if an error occurred
 * @throws IOException if an error occurred
 */
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet( request,  response);

} /**
 * Initialization of the servlet. <br>
 *
 * @throws ServletException if an error occure
 */
public void init() throws ServletException {
// Put your code here
}}
报的错:<classok
连接图片数据库成功
start select
oracle.jdbc.driver.OracleBlobInputStream@1f6d2e3
displayover
图片大小为0
<1
<2
<3
ClientAbortException:  java.net.SocketException: Software caused connection abort: socket write error
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:358)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:354)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:381)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:370)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
at servlet.pictureDisplay.doGet(pictureDisplay.java:105)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
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.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:764)
at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:129)
at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:570)
at org.apache.coyote.Response.doWrite(Response.java:560)
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:353)
... 19 more