日期:2014-05-18  浏览次数:20756 次

急!从数据库读图片输出到JSP页面的问题
...

try{            

ResultSet   rs=s.executeQuery( "select   *   from   pictures ");
response.setContentType( "image/jpeg ");    
OutputStream   os   =   response.getOutputStream();    
out.write( " <table> <tr> <td> picture </td> </tr> ");
while   (rs.next())  
{  

byte[]   dt   =   rs.getBytes(2);
os.write(dt);

}
os.flush();
rs.close();

}   catch(Exception   e)
          {        
                  e.printStackTrace();
                  throw   new   SQLException( "错误: "+e);
          }
...
在SQL   Server   2000中有pitures表,其中第二个字段为image类型,表中有三行,每行的第二个字段为一张.JPG的图片。
我的问题是:一,每次从用上述代码从表中读数据显示到JSP页面中时,总是只显示第一行的那张图片。也无异常抛出。二,out.write()无法输出内容到JSP页面。
求解决办法。

------解决方案--------------------
跟踪下程序

------解决方案--------------------
一次http请求可以返回多个图片么?
个人认为应该不可以,至少不是这么简单。
response.setContentType( "image/jpeg ");
这是对一个base64编码段的注解啊,一个段里面怎么能同时图文混合,还要多张图,浏览器怎么知道数据在哪里分开?

所以多个图片应该在一个页面中给出访问地址,由浏览器逐个访问,分别get
你的程序可以接受个参数,确定访问的是哪一张图片,好给出回应。
------解决方案--------------------
先读出来存在临时文件夹中,然后在加载图片,不是更好?
------解决方案--------------------
这么写不行的.

因为你设置文件头是图片类型.那么它会把整个返回内容作为一张图片的内容来显示 
response.setContentType( "image/jpeg ");


这是二次响应问题..

你应该先把整个页面的代码 <html> 输出.

在你要显示图片的地方 连接到servlet
<html>
<table>
<tr>
<td>
<img scr= "servlet的连接........... " > <!--图片1的连接-->
</td>
<td>
<img scr= "servlet的连接........... " > <!--图片2的连接-->
</td>
<td>
<img scr= "servlet的连接........... " > <!--图片3的连接-->
</td>
</tr>
</table>
<html>
------解决方案--------------------
yunxiang(无名) 所说正是我意