0

我的代码如下 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 中,我从会话中获取帐单列表作为 bpsBiller。在这我有 billerId。基于 billerId 我正在显示图像。

我正在使用 billerImages.jsp 显示图像。并且图像来自现有的数据库表。Billers list 是我在会话中放入的。来自此会话的图标(blob 数据类型)。getAttribute("账单");

我正在使用休眠。“billers”是来自 Struts2 Action Class 的 billers 列表。我使用 hibernate 从数据库中检索 billers

但我的问题是我正在获取列表。我在数据库中没有图像。如果列表中有 10 条记录,则显示 10 幅图像。但所有 1-10 条记录仅显示第 10 幅图像。我应该总共获得 10 张不同的图像。

请帮我解决这个问题。

4

1 回答 1

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

于 2012-12-25T09:17:51.330 回答