2010-10-02 6 views
3

Jetez un oeil à l'extrait de code suivant que je l'utilise pour récupérer des images à partir d'une base de données:la récupération de plusieurs images à partir de la base de données en utilisant jsp-servlet

response.setContentType("image/gif"); 
String url="jdbc:oracle:thin:@localhost:1521:xe"; 
String username="xyz"; 
String password="abc"; 

Class.forName("oracle.jdbc.driver.OracleDriver"); 
Connection conn=DriverManager.getConnection(url,username,password); 
String sql="Select name,description,image from pictures"; 
PreparedStatement stmt=conn.prepareStatement(sql); 
ResultSet resultSet=stmt.executeQuery(); 
ServletOutputStream sos=response.getOutputStream(); 

while(resultSet.next()) { 
    byte[] buffer=new byte[1]; 

    InputStream is=resultSet.getBinaryStream(3); 
    while(is.read(buffer)>0){ 
     sos.write(buffer); 
} 
sos.println(); 
sos.flush(); 
} 

sos.close(); 
conn.close(); 

J'essaie ce code pour afficher des images qui sont récupérées de la base de données. Ce code est supposé récupérer plusieurs images de plusieurs lignes qui sont stockées dans la base de données. Mais ce code affiche une seule image.

Répondre

3

Pourquoi afficherait-il plusieurs images? Vous définissez le type de contenu de la réponse sur image/gif, ce qui signifie que le navigateur attend une image unique. Cependant, vous diffusez plusieurs images dans le flux de réponses.

Je suppose donc que le navigateur ne prend que la première image. Il pourrait tout aussi bien rejeter toute la réponse comme étant corrompue (puisque nous avons plusieurs images en streaming).

Vous devez identifier qui image que vous récupérez pour chaque demande, et modifier ci-dessus pour extraire une seule image (en modifiant votre façon appropriée SQL).

+0

Alors, comment puis-je définir le type de réponse afin qu'il affiche plusieurs images dans une seule page? Il serait beaucoup mieux si je suis capable d'afficher le nom de cette image comme texte.Est-ce possible? – DEEPMALA

+1

Vous devez (par exemple) créer une page HTML contenant une liste de références à vos images (nombre 1,2,3), etc. Vous aurez donc besoin d'une page JSP qui demande la liste des images et leur nom, et incorpore liens vers ces images. C'est un processus en deux étapes. –

1

Vous ne pouvez pas renvoyer plusieurs images à la fois. Vous pouvez penser à l'accès à la servlet comme un accès à un fichier.

Ici vous avez créé un "fichier" qui contient plusieurs images. La plupart des rendus d'image ne verront que la première image stockée dans le "fichier".

Si vous voulez avoir plus d'une image, vous devez faire plus d'une demande (ou ouvrir plus d'un fichier).

+0

Eh bien, vous pourriez ... si vous les mettez tous dans une grande image et ensuite utiliser CSS pour montrer seulement la partie requise de celui-ci. Mais c'est loin d'être facile. – Gimby

1

Comme l'ont déjà souligné Brian et Colin, vous ne pouvez pas avoir plusieurs images, toutes étant accessibles simultanément. Il semble que votre tâche consiste à avoir plusieurs images sur la même page. puis l'un des moyens suggérés par Brian (en utilisant JSP qui appelle les images). L'autre façon est de diviser votre page en plusieurs ensembles de cadres qui eux-mêmes peuvent appeler les images de la même manière que JSP.

Questions connexes