2 votes

Afficher un blob sur une page jsp

Ok, j'essaie d'afficher une image avec le prénom et le nom de l'utilisateur sur une page jsp mais je n'obtiens que l'image et non le prénom et le nom... alors quel est le problème ? ...votre aide sera appréciée :)

<%@ page language="java" contentType="text/html; charset=windows-1256"
        pageEncoding="windows-1256"%>
        <%@ page import="java.sql.*" %>
         <%@ page import="java.io.*" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
    <title>Insert title here</title>
    </head>
    <body>
     <H1>Fetching Data From a Database</H1>
    <%

    Blob image = null;  
    byte[] imgData = null;  
    Connection con;
    String url="jdbc:mysql://localhost:3306/image";
    String uName="root";
    String pwd="root";
    Class.forName("com.mysql.jdbc.Driver").newInstance();
        con=DriverManager.getConnection(url,uName,pwd);
        String sql="Select * from image ";
        PreparedStatement stmt=con.prepareStatement(sql);

        ResultSet resultset=stmt.executeQuery();
    while(resultset.next())
    {

        Blob bl = resultset.getBlob("image");
        byte[] pict = bl.getBytes(1,(int)bl.length());
        response.setContentType("image/jpg");
        OutputStream o = response.getOutputStream();

    %>
    <TABLE BORDER="1">
    <TR>

    <TH>First Name</TH>
    <TH>Last Name</TH>
    <TH>picture</TH>
    </TR>
    <TR>

    <td>Image</td><td><%o.write(pict);%></td>
        <%o.flush();
        o.close();%>

    <TD> <%= resultset.getString(2) %> </TD>
    <TD><%= resultset.getString(3) %></TD>
    </TR>
    </TABLE>
    <BR>
    <%
    o.flush();
    o.close();
    }
    %>
    </body>
    </html>

0voto

Ahmed Points 282

Votre code inclut des appels à o.close() après avoir écrit l'image et plus tard. Cela fermera le flux de sortie de la réponse, et plus rien ne sera envoyé. Ne faites pas cela - laissez le conteneur web se charger de fermer le flux de sortie.

Cela devrait expliquer pourquoi le prénom et le nom ne devraient pas être affichés : le flux de réponse a été fermé.

De plus, je ne pense pas que le type de contenu de la réponse devrait être "image/jpg", surtout si l'on considère que la métabalise HTML indique que le contenu est "text/html". Je pense qu'ils devraient être identiques - "text/html".

Enfin - et peut-être le plus important ? - JSP est très vieux. Vous pouvez envisager d'utiliser Facelets (technologie JavaServer Faces).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X