我觉得你这段两层循环的代码有问题:  
     while (rs.next()){
out.println(rs.getString("title")+"<BR>");
       InputStream is=rs.getBinaryStream("b");
       while( (nRead=is.read(buf)) != -1 ) {
        o.write(buf, 0, nRead);
        }
o.flush();
        o.close();
      }你看你的外层循环,循环的是每一条记录.但是,你在内层循环读完第一条记录的图片数据后,就把输出流o关闭了.后面再循环以后的记录,就不能再写到输出流里去了.

解决方案 »

  1.   

    <%@ page contentType="image/gif" %>
    <%@ page import="java.net.*" %>
    <%@ page import="java.sql.*,javax.sql.*,java.io.*,java.util.*" %>
    <HTML><HEAD><TITLE> JPEG OUTPUT </TITLE></HEAD><BODY>
    <jsp:useBean id="dbConn" class="com.Vconn" scope="page"/>  
    <%
           Connection conn=dbConn.getCon(); 
       Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
           byte[] buf = new byte[32 * 1024];
           int nRead=0;
           OutputStream o=response.getOutputStream();
           String sql="select * from jimage";
       ResultSet rs=stmt.executeQuery(sql);
           while (rs.next()){
       out.println(rs.getString("title")+"<BR>");
           InputStream is=rs.getBinaryStream("b");
           while( (nRead=is.read(buf)) != -1 ) {
            o.write(buf, 0, nRead);
            
    }
       }
    o.flush();
            o.close();
    %>
    </BODY>
    </HTML>
    我把那个改过来了也是一样的,只输出一张图片.而且我这个语句out.println(rs.getString("title")+"<BR>");
    在页面上也没有输出.希望各位路过的大虾菜鸟们帮忙关注一下
      

  2.   

    显示图片时,你放到<image>标签中,你循环impge标签,这样就没有问题了。