如何从Oracle数据库中检索图像并在Struts中的JSP中显示

时间:2013-09-19 09:50:04

标签: java image jsp struts

美好的一天,

我上传了一个图片文件并将其存储在oracle数据库中。在Oracle SQL Developer中,图像数据显示为“(BLOB)”。

现在我想从我的数据库中检索一些数据并在jsp中显示。以下是我的actiaon.java文件代码的一部分:

thisForm.setCampaignName(cbo.getCampaignName());
thisForm.setImageDisplay(cbo.getImage());

以下是我在form.java文件中的代码的一部分(getter setter方法):

private String campaignName = null;

private byte[] imageDisplay = null;

public String getCampaignName() {
    return campaignName;
}

public void setCampaignName(String campaignName) {
    this.campaignName = campaignName;
} 

public byte[] getImageDisplay() {
    return imageDisplay;
}

public void setImageDisplay(byte[] imageDisplay) {
    this.imageDisplay = imageDisplay;
}

以下是我的jsp文件中代码的一部分:

<td class="value"><html:text property="campaignName" size="50" maxlength="50" /></td>

<td class="value"><bean:write name="campaignListingForm" property="imageDisplay" /></td>

campaignName在浏览器中显示正确,因为我键入并存储在oracle数据库中。但是,图像无法正确显示 它只是在我的浏览器中显示[B@5df25df2字。

我认为使用JSP显示图像时出错了。

请告知。

1 个答案:

答案 0 :(得分:0)

图像是二进制数据。您无法直接在页面中显示它。你必须在你的页面中有一个IMG标记,其 src 属性设置为struts动作中的另一个方法,该方法检索图像id(附加在src属性中图像url的末尾),取出给定图像并使用适当的mime /类型将其发送到客户端。所以序列如下:

  1. 您从数据库中获取数据(公司信息)
  2. 实现一个给出公司名称的方法(如果你有,则首选id),从DB加载公司图像并将其写入具有适当mime类型的响应输出流(类似于@提到的那个)纪尧姆)
  3. 在结果页面(显示公司信息的页面)上生成相应的 img 元素,并将src属性设置为步骤2中开发的操作的网址。确保传递公司名称(或id)作为查询字符串参数