try {
BLPrplFileUploadCollect blPrplFileUploadCollect = new BLPrplFileUploadCollect();
blPrplFileUploadCollect.query(" businessNo='周星驰'");
for (int j = 0; j < blPrplFileUploadCollect.getSize(); j++)
{
PrplFileUploadCollectSchema prplFileUploadCollectSchema = blPrplFileUploadCollect.getArr(j);
String queryString = prplFileUploadCollectSchema.getUploadServerName();
System.out.println("queryString  == " + queryString);
//以上的方法是从数据库中取得图片的路径 。比如 blPrplFileUploadCollect.getSize() = 5次。此地方循环5次。
均是得到D:\loadfile\temp\2012\0000000000\201207250544308623Desert.jpg 这样的路径。 可是这样循环5次,最后得到的图片只能是第一次循环出现的结果。 queryString = “D:\loadfile\temp\2012\0000000000\201207250544308623Desert.jpg ”;OutputStream output = response.getOutputStream();// 得到输出流
BufferedOutputStream bos = new BufferedOutputStream(output);// 输出缓冲流
FileInputStream hFile = new FileInputStream(queryString); // 以byte流的方式打开文件
int i = hFile.available(); // 得到文件大小
byte data[] = new byte[i];
int size = 0;
size = hFile.read(data);
while (size != -1) {
bos.write(data, 0, size);
size = hFile.read(data);
hFile.read(data); // 读数据
response.setContentType("image/*"); // 设置返回的文件类型
OutputStream toClient = response.getOutputStream(); // 得到向客户端输出二进制数据的对象
toClient.write(data); // 输出数据
hFile.close();
toClient.close();
}我的问题是: 有没办法显示多张图片。这样每次只能显示第一张图片,后面的没办法显示。
或者有没有什么办法,能让图片不在servlet中显示。最好是在jsp中显示。jsp中的src 要怎么写。请指教。这个问题困挠好久了。

解决方案 »

  1.   

    在jsp上写个循环,图片的名称最好相差一如,1.jpeg,2.jpeg类似,循环的时候img 的src指向xxx/循环次数.jpeg
      

  2.   

    对Servlet返回图片这个过程理解错了。在HTML中,每一句:
      <img src="imageservlet?id=xxxxoooo" />都将独立的请求一次 imageservlet,HTTP指令类似于:
      GET /context/imageservlet?id=xxxxoooo HTTP/1.0那么这个servlet也将仅就这次请求,独立的返回一张图片的内容,servlet之内不应该有任何循环。不知道这么说你理解不?
      

  3.   

    我在HTML中,使用
    img src="imageservlet?id=xxxxoooo" /> 比如id="123",id="456",显示的图片还是一样的哎。
    那我servlet之内不循环的话。没办法取得那么多张图片的路径。
      

  4.   

    我在HTML中,使用
    img src="imageservlet?id=xxxxoooo" /> 比如id="123",id="456",显示的图片还是一样的哎。
    那我servlet之内不循环的话。没办法取得那么多张图片的路径。
      

  5.   

    要循环的是 HTML 页面,而不是 Servlet。
    JSP中类似于:
    <% while (rs.next) { %>
      <img src="imageservlet?id=<%=rs.getString("ID");%>" />
    <%}%>这就形成了一组的 <img> 标签。
    所以Servlet这边每次只需要处理一张。话说,你这分数给太多了,有个20分就够了。
      

  6.   


    明白什么意思了。在问一个问题。Servlet处理一次的图片的信息。要怎么送到JSP页面,让JSP页面得到?
    是不是把信息存到request中,然后request.getRequestDispatcher("").forward(request, response);??是不是这样??
      

  7.   

    Servlet每次只能处理一个文件,所以外层for循环必须消灭掉。此外关于文件输出部分也是彻底写错了。response.setContentType("image/*"); // 设置返回的文件类型
    BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());// 输出缓冲流
    FileInputStream hFile = new FileInputStream(queryString); // 以byte流的方式打开文件
    try {
      byte data[] = new byte[8192];
      int size = 0;
      while ((size = hFile.read(data)) != -1) {
        bos.write(data, 0, size);
      }
      bos.flush();
    } finally {
      hFile.close();
    }