需要在jsp中一次显示多个图像,这些图像来自db

时间:2012-12-25 09:09:31

标签: java

我的代码如下所示         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个不同的图像。

请帮我解决这个问题。

1 个答案:

答案 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);