我的代码如下所示 first.jsp
<%
List<BpsBiller> bpsBiller = (List<BpsBiller>)session.getAttribute("biller");
System.out.println("bpsBiller size ----->"+bpsBiller.size());
for(BpsBiller biller:bpsBiller){
byte[] imageData =new byte[1024];
imageData = (byte[])biller.getIcon();
session.removeAttribute("blobData");
session.setAttribute("blobData",imageData);
%>
<span style="padding:10px;">
<a href="javascript:fetchBillerFields('<%=biller.getBillerId()%>');">
<img src="<%=request.getContextPath()%>/transactions/billerImages.jsp" alt="biller logo" border="1" height="50" width="50">
</a>
</span>
<%
}
%>
我的billerImages.jps代码就像
<%
try{
byte[] imageData =new byte[1024];
imageData = (byte[])session.getAttribute("blobData");
int len = imageData.length;
if(imageData!=null){
int len1 = imageData.length;
response.setContentType("image/jpeg");
response.setHeader("Content-disposition","attachment; filename=" +"test");
response.getOutputStream().write(imageData,0,len);
response.getOutputStream().flush();
response.getOutputStream().close();
System.out.println("5");
}
System.out.println("6");
session.removeAttribute("blobData");
}catch(Exception e) {
e.printStackTrace();
System.out.println("--error--"+e.getMessage());
}
%>
在First.jsp中,我从会话中将billers列表作为bpsBiller。在这个我有billerId。基于billerId我正在显示图像。
我正在使用billerImages.jsp显示图像。 图像来自现有的数据库表。 Billers list是我把它放在会话中的。来自此会话的图标(blob数据类型)。的getAttribute( “记账”);
我正在使用hibernate。 “billers”是来自Struts2 Action Class的billers列表。我使用hibernate从数据库中检索billers
但我的问题是我得到了清单。我在db中没有图像。如果列表中有10个记录,则显示10个图像..但是仅显示所有1-10个记录的第10个图像。我应该得到10个不同的图像。
请帮我解决这个问题。
答案 0 :(得分:0)
不要将图像作为blob放在会话中。相反,将图像ID作为参数传递:
<img src="<%=request.getContextPath()%>/transactions/billerImages.jsp?id=<%=biller.getBillerId()%>" alt="biller logo" border="1" height="50" width="50">
让你的billerImages.jsp
检索该参数并查询数据库,并每次返回属于它的图像。
如果您仍想将会话用作存储图像的方法,请不要对所有图像使用相同的属性:
session.setAttribute(“blobData”+ biller.getId(),imageData);