java中oracle多个blob类型如何在jsp中显示成图片
展开全部
使用WSH(webwork,spring,hibernate)技术,在页面中加载10-20个图片时,因为数据都是在oracle 10g中以blob类型存储,页面代码采用webwork标签iterator遍历集合,iterator标签里写了一个<img>
前台代码如下:
<ww:iterator value="bloblist" id="it" status="rowstatus">
<%--显示图片--%>
<img id='<ww:property value="id"/>' name="imgId" width="120" height="120" src="/blobUtil/getImg.action?id=<ww:property value='bloblist[#rowstatus.index].id'/>" />
</ww:iterator>
后台代码:
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;
}
展开全部
定义一个规则,让每个blob内容都对应一个http开头的url。
jsp展示图片的时候使用这些url作为image的src。
实际上jsp显示图片就是向服务器请求这些url,服务器应该返回对应的图片文件。
这些图片文件的内容就是blob中的内容。
服务端的实现就是按你定义的规则,通过请求的url找到对应的blob,然后把blob的内容以流的形式返回。当然还要按http协议要求,加上合适的mime type,content type,content length等信息。
jsp展示图片的时候使用这些url作为image的src。
实际上jsp显示图片就是向服务器请求这些url,服务器应该返回对应的图片文件。
这些图片文件的内容就是blob中的内容。
服务端的实现就是按你定义的规则,通过请求的url找到对应的blob,然后把blob的内容以流的形式返回。当然还要按http协议要求,加上合适的mime type,content type,content length等信息。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用流啊,jsp页面读取数据流,然后写成图像文件。
这个好像网上也不少啊。找找看。不明白的话再问。
这个好像网上也不少啊。找找看。不明白的话再问。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询