Gewusst wie: abrufen und anzeigen von Bildern aus einer Datenbank in eine JSP-Seite?
Wie kann ich das abrufen und anzeigen von Bildern aus einer Datenbank in eine JSP-Seite?
InformationsquelleAutor krunal | 2010-02-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lassen Sie uns sehen, in Schritten was passieren sollte:
<img>
element.src
Attribut.src
- Attribut muss auf einen gültigenhttp://
URL und somit nicht um eine lokale Festplatte die Datei-system-Pfadfile://
wie das würde nie funktionieren, wenn der server und der client laufen bei physikalisch unterschiedlichen Maschinen.http://example.com/context/images/foo.png
) oder als request-parameter (z.B.http://example.com/context/images?id=1
)./images/*
, so dass Sie können führen Sie einfach eine Reihe von Java-code auf bestimmte URLs.byte[]
oderInputStream
von der DB, die JDBC-API bietet dieResultSet#getBytes()
undResultSet#getBinaryStream()
für diese, und JPA API bietet@Lob -
.byte[]
oderInputStream
zu denOutputStream
von der Reaktion der üblichen Java IO Weg.Content-Type
response-header muss gesetzt sein. Sie erhalten das Recht, überServletContext#getMimeType()
basierend auf Bild-Datei-Erweiterung, die Sie erweitern können und/oder außer Kraft setzen, über<mime-mapping>
imweb.xml
.Dass sollte es sein. Fast schreibt den code selbst. Beginnen wir mit HTML (in JSP):
Können Sie falls erforderlich auch dynamisch festlegen
src
mit EL während der Iteration mit JSTL:Dann definieren/erstellen einer servlet das hört auf GET-Anfragen über URL-Muster der
/images/*
im folgenden Beispiel wird mit plain-vanilla-JDBC für den job:Das ist es. Falls Sie befürchten, dass die KOPF-und caching-Headern und richtig reagiert auf diese Anforderungen, verwenden Sie diese abstrakte Vorlage für die statische resource servlet.
Siehe auch:
+1 Ausgezeichnete Antwort. . .
Wie kann das getan werden, in das Spring-Framework. Der controller gibt nur eine Ansicht. Wie kann der byte-stream zurückgegeben werden.
Ich weiß, Sir, ich erwähnte auch, dass "wenn Sie MVC" tatsächlich ein Benutzer kann über diesen post, wenn er mit MVC (wie in meinem Fall, ich bin mit MVC).
Plain JSP/Servlet kann auch verwendet werden als MVC. Die aktuelle Frage ist nicht, über Spring-MVC-Frameworks überhaupt. Suchen Sie einfach die richtige Frage, wenn Sie wirklich brauchen, um auf einen Beitrag zu Spring MVC-gezielte Antwort/Kommentar.
InformationsquelleAutor BalusC
Ich schlage vor, Sie Adresse ein, zwei Probleme. Es gibt mehrere Fragen und Antworten in Bezug auf beide.
Gewusst wie: laden von blob aus MySQL
Siehe zum Beispiel Abrufen Bild als blob gespeichert
Anzeige Bild dynamisch
Siehe zum Beispiel Show thumbnail dynamisch
InformationsquelleAutor ewernli
Versuchen zu Spülen, und schließen Sie die Ausgabe-stream, wenn es nicht angezeigt.
Blob image = rs.getBlob(ImageColName);
InputStream in = image.getBinaryStream();
//Ausgabe der blob auf der HttpServletResponse
response.setContentType("image/jpeg");
BufferedOutputStream o = new BufferedOutputStream(response.getOutputStream());
InformationsquelleAutor Sonam Tshering
Können Sie auch benutzerdefinierte Tags für die Anzeige von Bilddaten.
1) erstellen von benutzerdefinierten tag-java-Klasse und tld-Datei.
2) schreiben von Logik, um Bild wie Umwandlung von byte[] zu string mit Base64.
also es wird für jedes Bild, ob Sie die Anzeige nur ein Bild oder mehrere Bilder in einzelne jsp Seite.
InformationsquelleAutor Musaddique
Ich verwendete SQL-SERVER-Datenbank und-so die Antwort-code in übereinstimmung. Alles, was Sie tun müssen, ist, gehören ein
<img>
tag in Ihrem jsp-Seite, und rufen Sie ein servlet, das von seinem src-Attribut wie diesesHier 1 ist die eindeutige id des Bildes in der Datenbank und die ID ist eine variable. Wir erhalten Wert dieser Variablen im servlet. In der servlet-code, den wir nehmen der binäre stream input von der richtigen Spalte in der Tabelle. Das ist dein Bild gespeichert ist, in welcher Spalte. In meinem code habe ich verwendet, Dritte Spalte, da meine Bilder sind gespeichert als binäre Daten in der Dritten Spalte. Nach dem abrufen Eingabe-stream-Daten aus der Tabelle Lesen wir seinen Inhalt in ein Ausgabe-stream, so kann es sein, geschrieben auf dem Bildschirm. Hier ist es
Nachdem die Ausführung der jsp-oder html-Datei sehen Sie das Bild auf dem Bildschirm.
Liebe BalusC, Können Sie diesen code thread-safe und entfernen Sie die anderen Mängel festgestellt, die von dir, bitte.
Folgen Sie einfach den code in die derzeit akzeptierte Antwort.
Ich aktualisiert meine Antwort. Es ist jetzt perfekt.
InformationsquelleAutor Gaurav Mahindra