【问题标题】:I want to retrieve image from the database and display it in a jsp page我想从数据库中检索图像并将其显示在 jsp 页面中
【发布时间】:2019-02-17 08:47:15
【问题描述】:

首先我有一个方法'insertimage'用于在数据库中插入图像,然后我使用了一个Servlet类并调用方法'insertimage'进行插入操作。我有一个部件类型的bean类属性'image'和我使用了 bean 类的 setter 方法并设置了从索引页面获取的图像。请帮助获取图像并将其显示在 jsp 页面中的代码

将图片插入数据库

   public boolean insertimage(FoodItems food)
{
boolean result=false;
try
{
    InputStream inputstream=null;
image=food.getImage();// i have a bean class property of Part type 
    if(image !=null)
    {
        long fileSize=image.getSize();
        String  fileContent=image.getContentType();
        inputstream=image.getInputStream();
    }
    PreparedStatement pst=con.prepareStatement("insert into AvailableItems values(?)");
    pst.setBlob(1,inputstream);
    pst.executeUpdate();
    result=true;
}
catch(Exception e)
{
    System.out.println("error st Available insert"+e);
}
return result;
}

//servlert 类

@MultipartConfig(maxFileSize=169999999)

@WebServlet("/InsertFoods") 
    public class InsertFoods extends HttpServlet


 {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 

{
response.setContentType("text/html");
PrintWriter pw=response.getWriter();
Part image=request.getPart("image");
DBOperations db=new DBOperations();
FoodItems food=new FoodItems();
food.setImage(image);
if(db.insertimage(food))
{
    response.sendRedirect("AvailableItems.jsp");
}
else
{
    pw.println("not inserted");

}
    }
}

【问题讨论】:

    标签: java mysql jsp servlets


    【解决方案1】:

    假设您有想要检索图像的 jsp 页面。你可以做这样的事情来从database检索任何图像。

     <%   //dbconnection
              try {
                       Class.forName("com.mysql.jdbc.Driver");
                     java.sql.Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/project","root","");
                      Statement statement = conn.createStatement() ;
           resultSet=statement.executeQuery("select * from tablename") ; 
                    %>
           <% while(resultSet.next()){ %> 
    
       Image - <img src="ImageProcess?id=<%=resultSet.getString("id")%>" width="20%"/>
    
        <% 
        }
        }catch(Exception e){}
    
        %>
    

    在上面的代码中 -> &lt;img src="ImageProcess?id=&lt;%=resultSet.getString("id")%&gt;" /&gt;line 很重要,在这里你将 parameter 传递给 servlet 以获得特定的 image

    现在,在您的servleti.e ImageProcess 中,您必须检索doGet 中的id 并传入查询,最后将响应发送回jsp 页面。

    Blob image = null;
            byte[] imgData = null;
           String id= request.getParameter("id");//here you are getting id 
           int i;
           ResultSet rs =null;
    
     try {
    
                //loading drivers for mysql
               Class.forName("com.mysql.jdbc.Driver");
                 Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/project","root","");
    
    
             String sql = "SELECT image FROM tablename where id=?"; //here pass that id in query to get particular image 
    
               PreparedStatement ps = con.prepareStatement(sql);
    
    
                   ps.setString(1, id);
                  rs = ps.executeQuery();    
     while (rs.next()) {
                      image = rs.getBlob("image");//getting image from database 
                      imgData = image.getBytes(1,(int)image.length()); //extra info about image
                    } 
    
    response.setContentType("image/gif");//setting response type
    
    
    
    OutputStream o = response.getOutputStream();
    
    o.write(imgData);//sending the image to jsp page 
    o.flush();
    o.close();
    
    
     }
        catch(Exception e)
             {
                 e.printStackTrace();
    
             }
    

    这不是完整的代码,请根据您的要求进行更改。也不要忘记添加jar's file

    【讨论】:

      猜你喜欢
      • 2015-11-14
      • 2015-02-28
      • 2015-11-23
      相关资源
      最近更新 更多