Bonjour,
J'ai une base de données MySql avec une table Fichier qui contient un champ d'image Blob.
Je récupère toutes ces images dans une servlet et j'aimerai les afficher dans une page jsp.
Actuellement, j'arrive à passer une image dans la page jsp, mais je n'arrive qu'à afficher cette image et plus de texte...

Dans ma servlet j'ai ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
try{
	    	   String url = "jdbc:mysql://localhost";
	    	   conn = DriverManager.getConnection(url, "login", "mdp") ;
	    	   System.out.println("URL ok!");
	    	   Statement stm = conn.createStatement();
	    	   ResultSet rset;
	    	   rset = stm.executeQuery( "SELECT * FROM fichier" );
	    	   request.setAttribute("fichier", rset);
	    	   request.getRequestDispatcher("rechercheToutResult.jsp").forward(request, response);	
	    	   stm.close();
	    	   rset.close();
	    	   conn.close();
	       }

Et dans ma page jsp j'ai ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<% ResultSet rs = (ResultSet) request.getAttribute("fichier"); 
                                while (rs.next())
                                {
                                        out.println("Catégorie:"+ rs.getInt("cat_fic") + "Nom:"+ rs.getString("nom_fic"));
                                        Blob photo = null;
                                        ServletOutputStream out2 = response.getOutputStream();
                                        photo = rs.getBlob("fic_fic");
                                        response.setContentType("image/gif");
                                      InputStream in = photo.getBinaryStream();
                                      int length = (int) photo.length();
 
                                      int bufferSize = 1024;
                                      byte[] buffer = new byte[bufferSize];
 
                                      while ((length = in.read(buffer)) != -1) {
                                        System.out.println("writing " + length + " bytes");
                                        out2.write(buffer, 0, length);
                                      }
 
                                      in.close();
                                      out2.flush();
                                        
                                }
                        %>

Je rappelle que j'ai plusieurs images dans ma table et qu'avec ce code je n'arrive qu'à afficher une seule image...
J'espère que c'est compréhensible, merci d'avance pour vos réponses