2012-04-07 98 views
1

我设法将图像作为Blob存储在我的mysql数据库中。 (我也使用休眠) 现在我想加载该图像并将其发送到一个jsp页面,以便用户可以查看图像。使用struts 2和休眠在jsp页面显示Blob(图像)

这是我的支柱2 Action类

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.sql.Blob; 
import org.hibernate.Hibernate; 

import domain.post.image.Image; 



public class FileUploadAction { 

    private File file; 

    @SuppressWarnings("deprecation") 
    public String execute() { 

     try { 
      System.out.println(file.getPath()); 
      Image image = new Image(); 
      FileInputStream fi = new FileInputStream(file); 

      Blob blob = Hibernate.createBlob(fi); 
      image.setImage(blob); 
      image.save(); 

     } catch (FileNotFoundException e) { 

      e.printStackTrace(); 
     } catch (IOException e) { 

      e.printStackTrace(); 
     } 
     return "success"; 
    } 

    public File getFile() { 
     return file; 
    } 

    public void setFile(File file) { 
     this.file = file; 
    } 

,这是我的形象类

public class Image extends AbsDBObject<Object> { 


    private static final long serialVersionUID = 1L; 
    private static Logger logger = Logger.getLogger(Image.class); 
    private Blob image; 
    private String description; 

//Getters and Setters 

} 

请你告诉我,我应该放什么东西在动作类,jsp页面和struts.xml以显示存储的图像?

+0

如果问题得到解决,则将答案标记为接受。 – ManuPK 2012-04-09 13:53:34

回答

5

我终于解决了这个问题,为今后的Google:

加入这一行JSP,

<img src="<s:url value="YourImageShowAction" />" border="0" 
width="100" height="100"> 

,这是ShowImageAction类:注意,执行方法是无效的,所以没有重定向

import java.io.IOException; 
import java.io.OutputStream; 
import java.sql.SQLException; 

import javax.servlet.http.HttpServletResponse; 
import org.apache.struts2.ServletActionContext; 
import com.raysep.maxlist.domain.post.image.Image; 

public class ShowImageAction { 

    private static byte[] itemImage; 

    public static void execute() { 

     try { 

      Image slika = Image.fetchOne(); 

      HttpServletResponse response = ServletActionContext.getResponse(); 
      response.reset(); 
      response.setContentType("multipart/form-data"); 

      itemImage = slika.getImage().getBytes(1,(int) slika.getImage().length()); 

      OutputStream out = response.getOutputStream(); 
      out.write(itemImage); 
      out.flush(); 
      out.close(); 

     } catch (SQLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 


    } 

    public byte[] getItemImage() { 
     return itemImage; 
    } 

    public void setItemImage(byte[] itemImage) { 
     this.itemImage = itemImage; 
    } 


} 
+0

'slika' - 我喜欢那个老兄帮我:) – Trick 2013-03-27 14:49:45