Bild von Datenbank in jsp anzeigen

Status
Nicht offen für weitere Antworten.

MisterG

Mitglied
Hallo Forum-Mitglieder

Ich habe in einer Datenbank ein Blob-Feld mit Bildern als Inhalt. Nun möchte ich diese in einer jsp anzeigen lassen. Bei der Forensuche habe ich nur diesen Beitrag gefunden.
Ist das die einzige Möglichkeit? Ich verstehe den Code nicht wirklich.

Habe einfach noch keinen richtigen Ansatz finden können, wo ich beginnen soll. Gibts irgend ein Tutorial oder weiss jemand einen guten Suchbegriff?

Ich bin für jede Hilfe, Ratschlag und Hinweis Dankbar.

Mit freundlichen Grüssen,
MisterG
 

ARadauer

Top Contributor
hab letze woche sowas gemacht, hab aber ein servlet benutzt.

so ungefähr:

rs ist ein ResultSet und image ist ein BufferedImage
Code:
Blob imageBlob =rs.getBlob("BLOBBILD");
InputStream is = imageBlob.getBinaryStream();
image = ImageIO.read(is);

Code:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
...		
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());
encoder.encode(imageFromDb.getImage());
...

imageFromDb.getImage() liefert das BufferedImage zurück

funktioniert super, tu mir jetzt leider schwer, ein ganzes beispiel zu zeigen, da die ganze angelegenheit in ein framework eingebttet habe und alles auf ein paar klassen verteilt ist.

wie weit bist du bereits, poste mal code vielleicht kann ich dir dann besser helfen.
 

MisterG

Mitglied
Hallo ARadauer

Code:
<%query = "SELECT PIC FROM TABELLE WHERE PICID=2";
ResultSet rs = stmt.executeQuery(query);
if (rs.next()){
	Blob data = rs.getBlob(1);
	InputStream is = data.getBinaryStream();%>
	

[img]<%=ImageIO.read(is)%>[/img]</img></p>
<%}%>

So habe ich es jetzt probiert (funktioniert noch nicht). Den zweiten Code-Schnippsel von dir habe ich nicht verstanden was ich mit dem machen muss.
 

ARadauer

Top Contributor
versuch mal das ganze zu trennen.
eine jsp die das bild lädt und eine in der es angezeigt wird

<img src = "bild.jsp">

und in der bild.jsp, dann sowas

Code:
<%
response.setContentType("image/jpeg");

query = "SELECT PIC FROM TABELLE WHERE PICID=2"; 
ResultSet rs = stmt.executeQuery(query); 
if (rs.next()){ 
   Blob data = rs.getBlob(1); 
   InputStream is = data.getBinaryStream();
    BufferedImage image = ImageIO.read(is); 
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream()); 
    encoder.encode(imageFromDb.getImage());
}
%>

oder so (das hab ich nicht getestet)
Code:
<%
response.setContentType("image/jpg");
if (rs.next()){ 
   Blob data = rs.getBlob(1); 
   InputStream is = data.getBinaryStream();
   BufferedImage image = ImageIO.read(is); 	

    Iterator writers = ImageIO.getImageWritersByFormatName("jpg");
    ImageWriter writer = (ImageWriter)writers.next();
    ImageOutputStream ios = ImageIO.createImageOutputStream(response.getOutputStream());
    writer.setOutput(ios);
    writer.write(image );
    ios.close();
}
%>

für die browswer der <img src = "bild.jsp"> aufruft, muss es praktisch so aussehen als kommt ein bild daher (response.setContentType("image/jpg");)
 
M

maki

Gast
JSP ist eine Darstellungs/Template Technologie, sie ist besser für Textdaten (XML) geeignet, führt oft zu Darstellungsfehlern mit Binärdaten.

Ein Servlet wäre hier der richtige Weg imho.
 

MisterG

Mitglied
Hallo zusammen!

Wenn die bessere Variante mit einem Servlet ist mache ich dies lieber in einem Servlet. Kann ich da den gleichen Code verwenden wie ARadauer dies für das bild.jsp vorgeschlagen hat?

EDIT:
Ich habe nun ein Servlet erstellt. Füge es in der jsp einfach mit <img scr="bild"/> ein.

Mit Variante 1:
Was ist das imageFromDb für ein Objekt?

Mit Variante 2:
Nun habe ich bemerkt, dass image immer ==null ist.
Deswegen wird warscheinlich auch bei der Zeile
Code:
ImageWriter writer = (ImageWriter)writers.next();
immer ein java.util.NoSuchElementException ausgeworfen.

Was soll ich tun?

Gruss
MisterG
 

ARadauer

Top Contributor
So jetzt nochmal von Vorne. Die Code Schnipsel sind wahrscheinlich schwer zu verstehen. Aber wie gesagt, einen Teil erledigt mir das firmeninterne Framework und einige Sachen habe ich ausgelagert, jetzt ist meine fertige Lösung etwas zerteilt.

Ich habe es jetzt nochmal in einer JSP zusammen gefasst. Im Grunde ist ja eine jsp datei auch nur ein Servlet. Die Jsp Datei wird vom Compiler, in ein Servlet umgewandelt. Ich hab das Beispiel jetzt aber nochaml in einer jsp Datei nachgebaut.

Ist vielleicht einfacher, das Servlet müsstest du noch in der web.xml eintragen. usw..... von diesen deployment dingen, habe ich (leider) auch nicht so viel ahnung. wir haben hier eine eigene Abteilung fürs deployment.

Aber egal, also über JSP:

Verwenden tust dus so:



Und hier die image.jsp, also bei mir funktioniert es.


Code:
<%@page import="java.sql.Connection"%>
<%@page import="com.sun.image.codec.jpeg.JPEGCodec"%>
<%@page import="com.sun.image.codec.jpeg.JPEGImageEncoder"%>
<%@page import="javax.imageio.ImageIO"%>
<%@page import="java.io.InputStream"%>
<%@page import="java.sql.Blob"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.awt.image.BufferedImage"%>

<%
try{
	response.setContentType("image/jpeg"); 
	BufferedImage image;
	Connection connection = null; //verbindung aufbauen!!!
	//zb: connection = DriverManager.getConnection("url", "user", "pwd");
	
	PreparedStatement ps = connection.prepareStatement("SELECT BLOBID, BLOBBILD FROM BLOBTEST WHERE BLOBID = ?");
	ps.setInt(1,5);
	ResultSet rset = ps.executeQuery();
	if (rset.next()) {
		Blob imageBlob =rset.getBlob("BLOBBILD");
		InputStream is = imageBlob.getBinaryStream();
		image = ImageIO.read(is);
		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());
		encoder.encode(image);
	}
} catch (Exception e) {
	e.printStackTrace();
}	

%>

Paramter Übergabe usw.. darfst dir selber machen.
 

MisterG

Mitglied
Juhuu, es funktioniert!

Vielen herzlichen Dank!

Ich schrieb ja, dass ich immer image == null habe. Das lag daran, weil ich die Bilder als bmp in der Datenbank hatte. Nun mit png klappt es.

Zuerst bekam ich noch Exceptions zurück, das hat sich aber mit der Wechsel ins Servlet erledigt.

Das PreparedStatement Objekt kannte ich noch nicht, werde ich mir sicher für die Zukunft merken.

Es war sehr lehrreich. Noch einmal vielen Dank für die Hilfe.

MisterG
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
EagleEye Bild in Datenbank speichern und wieder anzeigen Datenbankprogrammierung 6
S binärdatei aus datenbank in bild umwandeln Datenbankprogrammierung 7
J Bild in Oracle Datenbank - Grundkurs Datenbankprogrammierung 7
H Java Class zum komprimieren von Jpeg-Images zum Einbinden in Oracle DB - Bild als blob (in und out) Datenbankprogrammierung 23
D MySQL Bild aus DB auslesen und auf FTP Speichern Datenbankprogrammierung 7
M Bild schreiben und einlesen Datenbankprogrammierung 2
G Bild aus als OLE-Typ aus MS Acces auslesen Datenbankprogrammierung 3
Y Hibernate - Bild speichern Datenbankprogrammierung 4
J Bild aus Mysql Blob in Webseite einbinden Datenbankprogrammierung 9
K Bild via JDBC und MySQL ausgeben Datenbankprogrammierung 2
R Bild in MySql speichern Datenbankprogrammierung 1
Baerdoc Empfehlungen zur Auswahl Datenbank Datenbankprogrammierung 6
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
M Meine Datenbank lässt sich mit meiner Methode nicht ändern Datenbankprogrammierung 1
I SaaS Applikation: pro Kunde eine Datenbank / Schema oder eine DB für alle Kunden? Datenbankprogrammierung 76
T SQL-Statement Datenbank nach SQL Statement schließen? Datenbankprogrammierung 7
MJannek Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
Auf MySql Datenbank zugreifen funktioniert nicht Datenbankprogrammierung 8
MongoDB-Datenbank in Androidstudio einbinden Datenbankprogrammierung 1
thor_norsk Datenbank: Apache Derby Datenbankprogrammierung 6
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
M Datenbank mit REST API Datenbankprogrammierung 66
M Entfernte Datenbank Datenbankprogrammierung 11
T Datenbank: Tabelle erstellen bei Web-Applikation Datenbankprogrammierung 4
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
M MySQL Datenbank in Array Datenbankprogrammierung 2
S Den letzten Eintrag aus Datenbank ziehen (Oracle SQL Dev.) Datenbankprogrammierung 14
N Datenbank abfragen nach bestimmten Wort Datenbankprogrammierung 7
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
ma095 value NULL- Datenbank Postgresql Spring - intellij community Datenbankprogrammierung 0
raptorrs Plötzlich keine Verbindung zur Datenbank mehr möglich Datenbankprogrammierung 14
Davee SQLite SQLite Datenbank lässt sich nicht auf anderen PCs öffnen Datenbankprogrammierung 8
P Datenbank Tool - besser als oracle SQL Developer gesucht mit effizinte Verbindungsverwaltung Datenbankprogrammierung 2
X JPA (EclipseLink) und Oracle Datenbank Datenbankprogrammierung 2
T Datenbank auf einer Webseite aus einer Exceltabelle erstellen Datenbankprogrammierung 5
L SQL Datenbank Datenbankprogrammierung 7
L SQL Datenbank INSERT INTO Datenbankprogrammierung 6
L SQL Datenbank Tabelle insert Datenbankprogrammierung 7
L SQL Datenbank Tabelle erstellen Datenbankprogrammierung 6
nonickatall MySQL Auf neue Datensätze in einer Datenbank reagieren Datenbankprogrammierung 5
W MYSQL Datenbank Login Android Datenbankprogrammierung 3
anton1 Online Datenbank Datenbankprogrammierung 7
krgewb H2-Datenbank öffnen Datenbankprogrammierung 8
J Datenbank abfragen Datenbankprogrammierung 6
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
O SQL Abfragen mit Mini Datenbank Datenbankprogrammierung 12
Z Datenbank Choicebox wird nicht befüllt Datenbankprogrammierung 15
S Suche In SQL Datenbank mit array Datenbankprogrammierung 6
P Enum in der Datenbank Datenbankprogrammierung 1
Z SQL- Datenbank 1.PK zu 2.FK Datenbankprogrammierung 3
E netbeans - jsp Daten in Datenbank hinzufügen Datenbankprogrammierung 2
bueseb84 Spring Boot : Update Mysql Datenbank Datenbankprogrammierung 1
Avalon Attribute werden mit Unterstrich in eine MySQL Datenbank eingetragen Datenbankprogrammierung 10
MiMa wo Datenbank verbinden/trennen? Datenbankprogrammierung 1
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
DeltaPilot12 Datenbank connect Funktion Datenbankprogrammierung 7
J Oracle Datenbank-Tabelle per Combobox (oder ähnliches) auswählen Datenbankprogrammierung 3
N SQL Datenbank Spalte in Java Array Datenbankprogrammierung 2
J JAR-Datei und Datenbank Datenbankprogrammierung 8
Bluedaishi Datenbank Abfrage Datenbankprogrammierung 36
Kirby.exe Zeile aus der Datenbank holen wenn ein match besteht Datenbankprogrammierung 7
Kirby.exe Es werden keine Einträge in der Datenbank gemacht Datenbankprogrammierung 23
C Datenbank anlegen und über eine Website mit Daten füllen? Datenbankprogrammierung 25
J Welche Kriterien haben Einfluss auf die Geschwindigkeit einer Datenbank ? Datenbankprogrammierung 4
B Frage zu Datenbank Design bei Events (ZenDesk) Datenbankprogrammierung 1
M SQLite Datenbank mit SQLite Datenbankprogrammierung 7
C String in Datenbank einfügen Datenbankprogrammierung 11
C Keinen Zugrift auf Datenbank Datenbankprogrammierung 2
C Datenbank zugreifen Datenbankprogrammierung 10
L Auf Strato Datenbank zugreifen Datenbankprogrammierung 7
H Fehler bei getConnection zu MySQL Datenbank Datenbankprogrammierung 18
G Datenbank Statement Datenbankprogrammierung 22
M Datenbank editierbach machen in JTable Datenbankprogrammierung 13
S Datenbank MySQL und Java Datenbankprogrammierung 8
M H2 Verbindung zur Datenbank komplett schließen Datenbankprogrammierung 11
J Aufbau meiner Datenbank/Tabelle - Verbessern? So lassen? Datenbankprogrammierung 39
J Nur CRUD über Datenbank Klasse, oder auch mehr ? Datenbankprogrammierung 2
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
L Appabsturz mit Datenbank Datenbankprogrammierung 4
J Zahlungseingänge von mehreren Kunden wie am besten abbilden in der Datenbank ? Datenbankprogrammierung 8
L Datenbank sichern Datenbankprogrammierung 8
S Daten von SQLite Datenbank nutzen Datenbankprogrammierung 5
J Datenbank VPS Server Datenbankprogrammierung 3
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
NIckbrick MySQL Befehle aus Datenbank auslesen Datenbankprogrammierung 21
S Datenbank/Java true/false Datenbankprogrammierung 8
J JUNIT und CRUD-Datenbank Datenbankprogrammierung 4
F Datenbank/Datenabgleich/Wiederholungsabfrage Datenbankprogrammierung 12
@SupressWarnings() Eure bevorzugte Datenbank-Library Datenbankprogrammierung 9
C datenbank verbindung config Datenbankprogrammierung 23
L MySQL Android zu externer MySQL Datenbank verbinden Datenbankprogrammierung 5
M Datenbank vor unerlaubtem Zugriff durch Benutzer schützen Datenbankprogrammierung 3
U MySQL Aus Servlet in Datenbank schreiben Datenbankprogrammierung 4
H Datenbank Export mit Java Datenbankprogrammierung 3
P Daten in eine mySQL Datenbank einfügen Datenbankprogrammierung 4
S SQL-Statement Datenbank Zeitbereich durchsuchen Datenbankprogrammierung 2
L Messenger App - Wie am besten auf Datenbank zugreifen? Datenbankprogrammierung 4
H MySQL Datenbank auf Xampp nimmt keine Mediumblob an. Datenbankprogrammierung 0
D Datenbank Abfrage Datenbankprogrammierung 7
H MySQL Benutzer Login System mit Datenbank Informationen (Abfrage zu User ist auf DB gesichert) Datenbankprogrammierung 42

Ähnliche Java Themen

Neue Themen


Oben