Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Renny
    Registrato dal
    Nov 2012
    Messaggi
    16

    Visualizzare immagine salvata in un database tramite pagina JSP

    Salve ragazzi, innanzitutto vi ringrazio del vostro tempo e passo subito al problema.

    Ho creato un login collegato ad un database MySQL in locale. Voglio che dopo aver effettuato il login c'è un tasto 'Carica immagine', e cliccando su quel tasto si apre una finestra di dialogo e l'immagine selezionata verrà poi inserita nel database e allo stesso tempo quell'immagine deve essere visualizzata nella stessa pagina JSP dove c'è anche il tasto 'Carica immagine', e ogni volta che eseguo il login con quei dati l'immagine deve essere sempre là

    Per l'inserimento dell'immagine nel database ho fatto così (sto usando struts 2):
    Pagina JSP
    codice:
    <s:form action="carica" id="carica" style="display:none" enctype="multipart/form-data">
        <s:textfield id="username" name="username" type="hidden"></s:textfield>
        <s:file id="carica" name="caricaimg" onChange="gestisciImmagine();"></s:file>
        <s:submit value="Carica" ></s:submit>
    La Classe
    codice:
    public String carica() throws SQLException, IOException{
            Connessione();   // Metodo per la connessione al database
            InputStream fin = new java.io.FileInputStream(caricaimg);
            int fileLength = (int)caricaimg.length();
            PreparedStatement pstmt = con.prepareStatement("UPDATE Utenti SET NomeImg = ?, Immagine = ? WHERE Username = ?");
            pstmt.setString(1, caricaimgFileName);  // Per il momento è una variabile vuota 
            pstmt.setBinaryStream (2, fin, fileLength);
            pstmt.setString(3, username);
            pstmt.executeUpdate();
            fin.close();
            return "success";
        }
    File di configurazione struts.xml
    codice:
    <action name="carica" class="Model.Registrazione" method="carica">
                  <result name="success">/index.jsp</result>
          </action>
    Adesso però devo caricare l'immagine dal db alla pagina JSP e non so come fare.
    Qualche buon'anima può spiegarmi come fare? Magari anche solo in linea teorica, sarebbe già un buon aiuto.. grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Renny Visualizza il messaggio
    Adesso però devo caricare l'immagine dal db alla pagina JSP e non so come fare.
    Sul record quindi dovresti avere il BLOB che contiene lo stream della immagine esattamente come se fosse un file es. jpg, png ecc... su file-system.

    Visto che usi Struts, userai quindi una Action apposita, mappata ad un url ben preciso. In questi casi, tramite query string si passa generalmente un qualche ID che permette di rintracciare quel record. Nel update hai usato uno username come "chiave". Qui potresti passare un ID numerico del record (se lo hai gestito).

    Nella action quindi:
    1) prendi il ID dai parametri in query string.
    2) fai la query su db.
    3) ottieni un InputStream per leggere lo stream nel BLOB.
    4) devi impostare la response con tutti i dati necessari, settando innanzitutto, come minimo, il Content-Type e anche il Content-Length.
    5) devi inviare pari pari lo stream della immagine nella response. Puoi farlo "a mano" con un banale ciclo e un piccolo buffer con un byte[] di una certa dimensione oppure utilizzando metodi già fatti (verifica prima se c'è qualcosa in Struts) come ad esempio nella libreria Apache Commons IO.

    Non devi inviare altro, né fare forward a una JSP o altro che comprometta la response.

    Per i punti 4/5 puoi anche usare una classe apposita di Struts: StreamResult

    Questo comunque è solo per servire la immagine in sé. Poi nelle altre pagine che hai, farai generare il solito <img> con il src che punta alla action e con il/i giusto/i parametro/i per rintracciare la immagine.
    Ultima modifica di andbin; 05-12-2014 a 19:41
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Renny
    Registrato dal
    Nov 2012
    Messaggi
    16
    Quote Originariamente inviata da andbin Visualizza il messaggio
    farai generare il solito <img> con il src che punta alla action e con il/i giusto/i parametro/i per rintracciare la immagine.
    E' proprio questa la parte più complessa secondo me, perché proprio non saprei come passare il parametro contenente l'immagine dalla classe alla pagina JSP utilizzando struts 2.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Renny Visualizza il messaggio
    E' proprio questa la parte più complessa secondo me, perché proprio non saprei come passare il parametro contenente l'immagine dalla classe alla pagina JSP utilizzando struts 2.
    No, questa è proprio la parte più banale! In una tua pagina vuoi mostrare la immagine? Devi semplicemente emettere in output (presumibilmente in una JSP) un codice html del tipo (questo è ciò che il browser riceve):

    <img src="/path-alla-tua-action?id=12345">

    (puoi aggiungere altri attributi, alt, title, ecc... ovviamente)

    Dove 12345 è ovviamente dinamico in output. Quale nome di parametro mettere (es. "id"), quale valore emettere e come usarlo per la query su db .... lo puoi/devi stabilire tu.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.