我将一幅图片保存到数据库里,再将其读取出来显示到页面时,页面显示:
org.hibernate.lob.SerializableBlob@e5f01b这个是什么?图片在数据库的地址信息?id,name字段显示正常,该作什么处理呢???

解决方案 »

  1.   

    Object的默认toString方法实现,包名.类名@十六进制内存地址
    你用程序把一个图像对象保存到数据库里,数据库写进去的是那个对象的二进制信息,而非那张图片。比如你的类里面定义的可被序列化时写入的属性有图片的路径、图片的位置、图片的大小等,当然保存下来的对象的属性就是这些,你就要在读这个对象出来的时候利用这些信息设置图片的路径、位置、大小,然后展现出来。
      

  2.   

    最后展现出来,是转换为image格式,然后在jsp页面显示这个image文件?还是要用到outputstream???第一次接触,不是很清楚要用到什么函数,希望大家说清楚一点,谢谢。
      

  3.   


    //jsp页面
    ..............
    </head>
    ...............//获取list语句
    ServletOutputStream os = response.getOutputStream();
    os.write(Img.instance().readImg(list));//list数据集合,Img.instance().readImg()自己写的函数,将数据转换为byte[]类型。
    os.close();
    <body>
    .............
    但如果这样写,就只显示一幅图片了,其他页面内容都没有了,而且list数据集不止一幅图片。
    如果将上面3句放在页面显示图片的标签中,还是这个结果。<td>
    <%ServletOutputStream os = response.getOutputStream();
    os.write(Img.instance().readImg(list));
    os.close(); 
    %>
    </td>
    请问大家该如何正确的显示图片信息呢???
      

  4.   

    有没有人会啊???
    或者我现在知道blob的内存地址了,怎么获取这个blob的二进制信息???。
    //通过blob的内存地址取得这个blob或blob的二进制输入流???怎么实现?
    //然后再通过下面的语句输出图片
    InputStream is = blob.getBinaryStream();//将blob转换为二进制输入流
    OutputStream os = response.getOutputStream();//声明
    byte[] b = new byte[is.available()];//声明
    is.read(b);//将二进制输入流读入字节数组
    os.write(b);//将数组信息输出
    is.close;
    os.close;