Je suis un peu perdu dans mes codes. Je suis entrain de developer une page en JSP pour rechercher et afficher des images contenues dans une base de donnee en MySQL.
Je pense que mon code est correct le probleme arrive au niveau de l'affichage car au lieu d'afficher l'image, je recois ce genre d'erreur :
La table Imagetb comporte 3 attributs et lattribut Image est e type BLOB.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 java.io.ByteArrayInputStream@62610b
La requete passe bien le seul problem c'est au niveau de l'affichage voici un bout de mon code.
Code : Search.java
Code : ViewSearch.JSP
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 try { Class.forName(driver).newInstance(); conn = DriverManager.getConnection(url+dbName,userName,password); System.out.println("Connected to the database"); String emp_name = request.getParameter("emp_name"); ArrayList al=null; ArrayList emp_list =new ArrayList(); String query = "select * from imagetb where Title='"+emp_name+"'"; System.out.println("query " + query); String imglen=""; st = conn.createStatement(); ResultSet rs = st.executeQuery(query); if(rs.next()){ imglen = rs.getString(1); System.out.println(imglen.length()); } while(rs.next()){ int len = imglen.length(); byte[] rb = new byte [len]; InputStream readImg = rs.getBinaryStream(3); int index=readImg.read(rb,0,len); System.out.println("index" + index); response.setContentType("image/jpg"); al = new ArrayList(); al.add(rs.getString(1)); al.add(rs.getString(2)); al.add(rs.getBinaryStream(3)); System.out.println("al :: "+al); emp_list.add(al); } request.setAttribute("empList",emp_list); System.out.println("empList " + emp_list); // out.println("emp_list " + emp_list); String nextJSP = "/viewSearch.jsp"; RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP); dispatcher.forward(request,response); conn.close(); System.out.println("Disconnected from database"); } catch (Exception e) { e.printStackTrace(); } }
Voici comment le result s'affiche
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 <body> <br><br><br><br><br><br> <table width="700px" align="center" style="border:1px solid #000000;"> <tr> <td colspan=8 align="center" style="background-color:ffeeff"><b>Image Record</b></td> </tr> <tr style="background-color:efefef;"> <td><b>Title</b></td> <td><b>Image</b></td> </tr> <% int count=0; String color = "#F9EBB3"; if(request.getAttribute("empList")!=null) { ArrayList al = (ArrayList)request.getAttribute("empList"); Iterator itr = al.iterator(); while(itr.hasNext()){ if((count%2)==0){ color = "#eeffee"; } else{ color = "#F9EBB3"; } count++; ArrayList empList = (ArrayList)itr.next(); %> <tr style="background-color:<%=color%>;"> <td><%=empList.get(1)%></td> <td><%=empList.get(2)%></td> </tr> <% } } %> <% if(count==0){ %> <tr> <td colspan=8 align="center" style="background-color:eeffee"><b>No Record</b></td> </tr> <% } %> </table> </body>
Title Image
lei java.io.ByteArrayInputStream@62610b
Merci pour votre aide.
Partager