Bild via JDBC und MySQL ausgeben

Status
Nicht offen für weitere Antworten.
K

Kooshy

Gast
Wie genau funktioniert denn das bitte einen Binären Stream in ein Web fähiges Bild umzuwandeln?

Das man dann via JSP darstellen kann?


welche Klassen und funktionen wären denn hier zu gebrauchen?

gruss


kooshy
 

huckfinn

Aktives Mitglied
Hi,
Na ja ich habs nur PSQL da aber das kann man ja ändern. Du schreibst ein Servlet, das auf die Datenbank zugreifen und einen Bilddatenstrom erzeugt und setzt ihn dann in die Serverpage ein. Jetz unüberprüft aber vom Code her etwa so. Ein Bild aus der Datenbank holen geht so .. ich gehe davon aus das in base64 als Text abgelegt ist aber unescapeSQL get auch. Das für dasServlet nehme ich an daß die Abfrage hat 3 Parameter table, imageColumn und imageIdent. Die Parameter muß du sinnvoll über die JSP setzen.

Code:
public class ImageServlet extends HttpServlet {

    private Connection  database   = null;
    private String databaseHost ="localhost";
    private String databasePort = "5432";
    private String databaseServerLogin ="nobody";
    private String databaseServerPassword ="nobody";
    private String databaseName = "database";
    private String jdbcClass    = "org.postgresql.Driver";
    private String jdbcPrefix   = "jdbc:postgresql";
   
  // DATENBANK ÖFFNEN
  public void openDb(String aJDBCDriver,
            String aJDBCPrefix,   String aHost,  String aPort,
            String aDatabase, String aUser,  String aPassword ) throws ServerShellException {
        try {
            Class.forName(aJDBCDriver);
            String aDbURL=aJDBCPrefix+"://"+aHost+":"+aPort+"/"+aDatabase;
            database = DriverManager.getConnection(aDbURL, aUser, aPassword);
        } catch( Exception e ) {
            throw new ServerShellException(
                    ServerShellException.ERROR_DATA_BACKPLANE_ACCESS+
                    " Details: "+e.getLocalizedMessage());
        }
    }
    
    // SERVLET INITIALISIEREN
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        databaseHost            = config.getInitParameter("DatabaseHost");
        databasePort            = config.getInitParameter("DatabasePort");
        databaseServerLogin     = config.getInitParameter("DatabaseServerLogin");
        databaseServerPassword  = config.getInitParameter("DatabaseServerPassword");
        databaseName            = config.getInitParameter("DatabaseName");
        jdbcClass               = config.getInitParameter("JdbcClass");
        jdbcPrefix              = config.getInitParameter("JdbcPrefix");
        openDb(jdbcDriver, jdbcPrefix, databaseHost,  databasePort, databaseName,
        databaseServerLogin, databaseServerPassword);
   }    

    // PARAMETER HOLEN
    public static TreeMap parseHttpRequestParameter(HttpServletRequest request) {
	String Token;	int Num =0;	TreeMap result = new TreeMap();
        Enumeration paramNames =  request.getParameterNames();
	while (paramNames.hasMoreElements()) {
         String prmName = (String)paramNames.nextElement();
         String[] prmValues = request.getParameterValues(prmName);
 	 if (prmValues!=null) {
	    Num = prmValues.length;
	    if (Num==1) 
	     result.put(new String(prmName), new String(prmValues[0])); 
	    else {
	     result.put(new String(prmName+".count"), Integer.toString(Num)); 
	     for (int i=0;i<Num;i++)	
 	      result.put(new String(prmName+"."+i), new String(prmValues[i])); 
            } 
	 } // end if
       } // end while
       return result; 
    }
    
    // BILD AUS DER DB HOLEN  UNESCAPE SQL geht auch ist nur einanderer Coder
    public void loadBase64Picture( int ident,   String identColumn,   String imageColumn,  String table,  DataOutputStream out) {
        try {
            String sql = "SELECT "+imageColumn+" FROM " + table +
                    " WHERE " + identColumn + " = " + ident + ";";
            res = stmt.executeQuery(sql);
            if (res.next() ) {
                String imageData = res.getString(imageColumn);
                title = res.getString(titleColumn);
                res.close();
                byte [] fromBase64 = Base64.decodeBase64(imageData.getBytes());
                out.write(fromBase64);
                //  image = new ImageIcon(fromBase64);
            }
        } catch (SQLException se) {
            System.out.println("Fehler beim Laden Bilddaten Ident " +
                    ident + " in " + table + "! Details: " + se);
        }
    }

    // HIER IST DER CODE
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        TreeMap param = TreeMap parameter  = StrUtils.parseHttpRequestParameter(request);
         String table = (String) param.get("table");
         String imageColumn = (String) param.get("imageColumn");
         String imageIdent = (String) param.get("imageIden");

        if (table==null) FEHLER und das auch für die 2 anderen Parameter

        response.setContentType("text/html;charset=UTF-8");
        DataOutputStream out = response.getWriter();
        loadBase64(table,imageColumn,imageIdent, out);
        out.close();
    }
    
     // Falls reques über POST 
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

     // Falls reques über GET
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
 }

Ja und dann rufst du das Servlet in der JSP oder Html-Seite auf:

Code:
<html><body>.....

  [img]http://host:8080/ImageServlet?table=tablename&imageColumn=imgaecolumn&imageIdent=imageident[/img]
....
</html>

Bis denne Huck
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
S binärdatei aus datenbank in bild umwandeln Datenbankprogrammierung 7
G Bild aus als OLE-Typ aus MS Acces auslesen Datenbankprogrammierung 3
J Bild in Oracle Datenbank - Grundkurs Datenbankprogrammierung 7
Y Hibernate - Bild speichern Datenbankprogrammierung 4
M Bild von Datenbank in jsp anzeigen Datenbankprogrammierung 7
J Bild aus Mysql Blob in Webseite einbinden Datenbankprogrammierung 9
EagleEye Bild in Datenbank speichern und wieder anzeigen Datenbankprogrammierung 6
R Bild in MySql speichern Datenbankprogrammierung 1
B SQLite + jdbc + IntelliJ-Consumer = "No suitable driver found..." Datenbankprogrammierung 15
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
N JDBC SQLITE und Cascading Datenbankprogrammierung 2
D Asynchrone Aufrufe mit jdbc Datenbankprogrammierung 5
Edin JDBC Hilfe Datenbankprogrammierung 2
H JDBC Tabellen ausgeben Datenbankprogrammierung 8
Husamoli345 JSF-JDBC Verbindung Crud Datenbankprogrammierung 15
G MySQL JDBC Metadaten auslesen aus .accdb -> Primärschlüssel manchmal erkannt manchmal nicht Datenbankprogrammierung 3
N Java, sql, jar, JDBC-Treiber in Classpath Datenbankprogrammierung 8
O Create Table per JDBC Fehler: ORA-00922 Datenbankprogrammierung 4
J JDBC anschaulich präsentieren Datenbankprogrammierung 2
Thallius MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied Datenbankprogrammierung 5
ralfb1105 Oracle JDBC Debugging Datenbankprogrammierung 8
Z [JDBC][MYSQL] Access denied Datenbankprogrammierung 7
Thallius MySQL jdbc schließt Verbindung nach vielen Request von selber Datenbankprogrammierung 8
B MySQL JDBC Kommentarfilter Datenbankprogrammierung 4
Aruetiise MySQL Name JDBC Drive finden Datenbankprogrammierung 4
E Sqlite-jdbc Mitliefern Datenbankprogrammierung 4
R jdbc-Zugriff Nicht erlaubt ? Datenbankprogrammierung 16
S probleme mit dem jdbc treiber Datenbankprogrammierung 1
Thallius MySQL Merkwürdiges JDBC Verhalten bei VPN Verbindung. Datenbankprogrammierung 7
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
F MySQL JDBC Problem Datenbankprogrammierung 5
C JDBC und SQLite Datenbank Datenbankprogrammierung 8
looparda SQLite Active JDBC Abstraktion Datenbankprogrammierung 2
J JDBC SQL Statement mit Parameter Datenbankprogrammierung 7
S JDBC PreparedStatement durchiterieren Datenbankprogrammierung 6
J RESTServie + JDBC + No suitable driver found for jdbc Datenbankprogrammierung 4
KaffeeFan JDBC/ODBC-Bridge entfernt Datenbankprogrammierung 4
S sun.jdbc.odbc.JdbcOdbcDriver wird nicht gefunden Datenbankprogrammierung 2
J Fehlende DatenbankView nach einbeziehen von JDBC Datenbankprogrammierung 3
A Mit JDBC auf postgreSQL Datenbank zugreifen Datenbankprogrammierung 5
C PostgreSQL JDBC + PostgreSQL: getLong liefert 0 statt NULL Datenbankprogrammierung 2
flenst111 SQL-Statement Wie konfiguriert man JDBC-Connect.richtig, damit es bei riesigen Tabs keinen Speicherüberlauf gibt? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
S JDBC mit Postgres DB connecten Datenbankprogrammierung 3
A Eine MySQL Zeile mit JDBC löschen Datenbankprogrammierung 5
D JDBC - Verständnisfrage Datenbankprogrammierung 2
C Tabelle erstellen mit Apache JDBC-Util Datenbankprogrammierung 1
L Conversion-Error bei JDBC Date Literals Datenbankprogrammierung 3
X MySQL DB-verbindung ohne JDBC/ODBC Datenbankprogrammierung 1
F sun.jdbc.odbc.jdbcodbcdriver wird nicht gefuden Datenbankprogrammierung 3
J Keine Verbindung zu MSSQL DB mit JDBC Datenbankprogrammierung 3
U JDBC prepaird Statements Datenbankprogrammierung 4
B MySQL JDBC Zugriff auf entfernt Datenbank, fehlende Rechte Datenbankprogrammierung 2
Q MySQL JDBC-Treiber Problem Datenbankprogrammierung 2
R Transaktionen von mehreren Anwendungen aus - JDBC Datenbankprogrammierung 3
N MySQL com.microsoft.sqlserver.jdbc.SQLServerException: Die Verbindung wurde geschlossen. Datenbankprogrammierung 1
N JDBC: rollback() bei Exception geht nicht!? Datenbankprogrammierung 1
C Dateipfad des jdbc Treibers Datenbankprogrammierung 2
G JDBC Connect nur über SID fehlerfrei möglich Datenbankprogrammierung 2
R Oracle jdbc Zugriff auf Oracle Datenbankprogrammierung 2
T JDBC Fehler Datenbankprogrammierung 2
J JDBC via Singleton Datenbankprogrammierung 12
Z PostgreSQL JDBC mit Postgresql Datenbankprogrammierung 2
B No suitable driver found for jdbc:oracle:thin:@$HOST:$PORT:$SID Datenbankprogrammierung 7
K JDBC via Netzwerk Datenbankprogrammierung 4
B JDBC Connection Fehler Datenbankprogrammierung 8
K JDBC- In Java "stored procedure" erstellen für DB2,OracleSql ... Datenbankprogrammierung 3
J JDBC in Library|"Treiber konnte nicht geladen werden"" Datenbankprogrammierung 2
B JDBC-Connection: Data source name too long Datenbankprogrammierung 3
D JDBC insert mit select abfrage Datenbankprogrammierung 5
A JDBC Prepared Statement Autoincrement Datenbankprogrammierung 3
H JDBC prüfen ob Table existiert Datenbankprogrammierung 3
crashfinger jdbc-connection mit jre7 funktioniert nicht Datenbankprogrammierung 5
0 JDBC Oracle Verbindungsaufbau Datenbankprogrammierung 6
Q Oracle Linux: ClassNotFoundException: oracle.jdbc.driver.OracleDriver Datenbankprogrammierung 6
B JDBC MySQL Statement Datenbankprogrammierung 3
F Oracle Oracle JDBC Anbindung unter Glassfish 3.1.2 Datenbankprogrammierung 3
V PostgreSQL JDBC Treiber fehlt Datenbankprogrammierung 6
Y JDBC - Datenbankabfrage Webserver Datenbankprogrammierung 4
C JDBC Datenbank funktioniert nicht Datenbankprogrammierung 7
C JDBC , JDO oder JPA Datenbankprogrammierung 17
J MySQL Datenbank konfigurieren, JDBC, MySQL oder Hibernate Datenbankprogrammierung 2
P JDBC Verbindung zur DB klappt nicht Datenbankprogrammierung 6
J Java - JDBC Verbindung zur Datenbank nicht möglich Datenbankprogrammierung 10
K JDBC Buch kaufen? Datenbankprogrammierung 3
K Hibernate vs. JDBC Datenbankprogrammierung 4
K JDBC Driver not found Datenbankprogrammierung 10
GianaSisters Per JDBC auf Microsoft SQL 2005 Datenbankprogrammierung 24
S ich brauche tipps für JDBC Datenbankprogrammierung 4
Paristick MSSQL - JDBC Exception beim Registrieren Datenbankprogrammierung 5
S Applet stucks at SQL Connection (jTDS JDBC) Datenbankprogrammierung 15
R MySQL Voraussetzungen für eine erfolgreiche Datenbankanbindung mittels JDBC Datenbankprogrammierung 2
c_sidi90 JDBC Oracle Connection schlägt fehl Datenbankprogrammierung 2
J jdbc-dataSource in Klassen nutzen Datenbankprogrammierung 2
H Rechnen in Datenbanken - JDBC Mittel der Wahl? Datenbankprogrammierung 32
K MySQL JDBC - Access Datenbank - unbekannter TabellenName Datenbankprogrammierung 4
D JDBC Fehler beim laden der nativen Bibliothek db2jcct2 Datenbankprogrammierung 9

Ähnliche Java Themen

Neue Themen


Oben