1.写了一个上传图片的JSP页面
2.然后写了一个ActionFrom接受页面传入过来的图片内容
3.然后写了一个Action将这个图片的全部内容保存到数据库(数据库保存图片内容的字段是BLOG类型的)以上都成功了,现在我想将这个传到数据库中的图片拿出来,并且显示到一个JSP页面上
请朋友回答怎么做? 

解决方案 »

  1.   

    写一个Servlet根据id从数据库中读取图片的二进制流package tarena.servlet;import java.io.IOException;
    import java.sql.Blob;import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import tarena.dao.page.PhotoDAO;public class ProductPhotoServlet extends HttpServlet {


    public void service(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    Integer id = Integer.parseInt(request.getParameter("id"));
    response.setContentType("image/jpeg");
    ServletOutputStream out = response.getOutputStream();
    PhotoDAO photodao = new PhotoDAO();
    Blob photo = null;
    try{
    photo = photodao.getProductPhotoById(id);
    }catch(Exception e){
    e.printStackTrace();
    }

    if(photo==null){
    return;
    }
    try{
    out.write(photo.getBytes(1, (int)photo.length()));
    }catch(Exception e){
    e.printStackTrace();
    }
    }

    } public Blob getProductPhotoById(Integer id) throws Exception {
    String sqlString = "select image from photo where id="+id;
    Connection connection = DBbyJdbcDao.getConnection();
    PreparedStatement pstm = connection.prepareStatement(sqlString);
    ResultSet rs = pstm.executeQuery();
    Blob b = null;
    if(rs.next()){
    b = rs.getBlob(1);
    }

    DBbyJdbcDao.close(connection);
    return b;

    }在jsp页面中src指向配置的servlet路径加上id参数,其它的都一样。
      

  2.   

    1楼的好像可以把,可是我现在是做一个项目用到的,项目的架构是struts和hibernate
    结果你的贴的servlet+jdbc的代码,希望楼下的高手贴下struts和hibernate怎么做 
      

  3.   

    等了几个小时了 怎么没高手愿意来回答一下,CSDN里搜索也没相关的帖子啊
      

  4.   

    页面里:
    <img src="***.do?method=image&id=${}>Action里相对应的image方法
    //获取流程图片信息进行显示
    public ActionForward image(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {

    WorkflowActionForm waf = (WorkflowActionForm)form;
    Workflow workflow = workflowManager.findWorkflow(waf.getId());
    //从数据库里查到储存的相对应的图片
    byte[] processImage = workflow.getProcessImage();

    response.setContentType("image/jpeg");
    response.getOutputStream().write(processImage);

    return null;
    }就是这样的了,别人不要抄袭呦!!!
      

  5.   

    谢谢楼上的回答,
    我还有个问题:就是在页面显示出数据库中所有的图片或者其中一部分图片
    那么Action代码到底怎么写