sql >> Base de Datos >  >> RDS >> Mysql

Quiero mostrar varias imágenes de la base de datos en jsp (estoy asignando un servlet), por lo que en jsp voy a mostrar en src de la etiqueta img

Suponga que tiene una página jsp donde desea recuperar la imagen. Puede hacer algo como esto para recuperar cualquier imagen de la base de datos.

 <% // 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 product") ; 
                %> 
    <!--this loop will get all images-->
       <% while(resultSet.next()){ %> 
    <!--I'm using id column of table,you can use any coulmn which is unique to all row-->
   Image - <img src="./Serv1?id=<%=resultSet.getString("id")%>" width="20%"/>
  < p>Product <%=r.getInt(1)%>: <%=r.getString(2)%></p>

    <% 
    }
    }catch(Exception e){}

    %>

En el código anterior, esto -> <img src="./Serv1?id=<%=resultSet.getString("id")%>" /> la línea es importante, aquí está pasando parameter es decir:id al servlet para obtener una image particular

Ahora, en tu servlet es decir, ./Serv1 tienes que recuperar el id en doGet y pase la consulta, por último envíe la respuesta a la página 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 prodimg FROM product 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();

         }

Además, este no es un código completo, realice cambios según sus requisitos. Tampoco olvide agregar jar's file

¡Espero que esto ayude!