java中oracle多个blob类型如何在jsp中显示成图片

2024-11-08 11:20:26
有3个网友回答
网友(1):

使用WSH(webwork,spring,hibernate)技术,在页面中加载10-20个图片时,因为数据都是在oracle 10g中以blob类型存储,页面代码采用webwork标签iterator遍历集合,iterator标签里写了一个

前台代码如下:


<%--显示图片--%>
' name="imgId" width="120" height="120" src="/blobUtil/getImg.action?id=" />

后台代码:
   

public String getImg() throws Exception{
        BufferedInputStream ins;//取得BLOB的IO流
        OutputStream ops;
        byte[] bt = null;
        getResponse().setContentType("image/JPEG");
        Blob bo = bjqeDtRelationService.getBjqeDtRelationChildBlob(imgId);
        if (bo == null) return null;
        InputStream is = bo.getBinaryStream();
        ins = new BufferedInputStream(is);
        int bufferSize = (int) bo.length();//取得BLOB的长度
        bt = new byte[bufferSize];
        ins.read(bt, 0, bufferSize);
        getResponse().getOutputStream().write(bt);
        ops = getResponse().getOutputStream();
        ops.flush();
        ops.close();
        ins.close();
        return null;
    }

网友(2):

定义一个规则,让每个blob内容都对应一个http开头的url。
jsp展示图片的时候使用这些url作为image的src。
实际上jsp显示图片就是向服务器请求这些url,服务器应该返回对应的图片文件。
这些图片文件的内容就是blob中的内容。
服务端的实现就是按你定义的规则,通过请求的url找到对应的blob,然后把blob的内容以流的形式返回。当然还要按http协议要求,加上合适的mime type,content type,content length等信息。

网友(3):

用流啊,jsp页面读取数据流,然后写成图像文件。
这个好像网上也不少啊。找找看。不明白的话再问。