请高手指点一下这样才能将所有记录的内容显示出来!<%@page contentType="text/html;charset=GBK" pageEncoding="GBK"%><%@page import ="java.util.*,java.sql.*,java.text.*,java.io.*,javax.sql.*"%><%Connection conn =null; Statement stmt=null;ResultSet rs=null;Class.forName("com.mysql.jdbc.Driver").newInstance();conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/first","root","110541129");stmt=conn.createStatement(); rs=stmt.executeQuery("select * from picture where name='车2'");while(rs.next()){ Blob b = rs.getBlob(2);int size =(int)b.length(); out.print(size);InputStream in=b.getBinaryStream();byte[] by= new byte[size];response.setContentType("image/jpeg"); OutputStream sos = response.getOutputStream(); int bytesRead = 0; while ((bytesRead = in.read(by)) != -1) { //out.print(new String(by)); sos.write(by, 0, bytesRead); } in.close(); sos.flush();}%>
你这样当然只能显示一张,因为你这样输出相当于把多张图片连接为一个文件,显示肯定只有一张,因为图片是有文件头的,文件头里面指定图片的幅度等属性,后面添加的文件都是不显示的,相当于垃圾数据。采用response.setContentType("image/jpeg"); 的脚本一次只能输出一个图片,要输出多个图片,必须用另外的脚本多次调用这个脚本:<img src=pic.jsp?name=xxx><img src=pic.jsp?name=yyy>
你那个SQL语句选出name是“车二”的图片,那么叫车二的是不是就一张呢?如果你想查找包含“车二”或是以“车二”打头的就要用模糊查询。另外显示图片我一般都做成一个函数,然后传入ID显示图片(当然每次显示图片的时候都要setContentType)。像你这样一次性向浏览器输出多幅图片,我怀疑不可以。