Repa235 ha scritto:
Vorrei sapere se apparte i blob è possibile in qualche modo associare un immagine a una voce della tabella del database e riportarla nella mia jsp
Se metti un BLOB, vuol dire che lo stream di byte stesso della immagine è fisicamente nel record della tabella. Se non metti un BLOB, vuol dire che la immagine la devi mettere fisicamente da qualche parte (su file-system, generalmente). E a quel punto nel record si mette di norma un nome di file con/senza path. Le immagini saranno da qualche parte su file-system (dentro l'applicazione o fuori dall'applicazione) e sarà ovviamente la applicazione a sapere come rintracciare e comporre un percorso appropriato per "aprire" in lettura la immagine.
Ma che ci sia un BLOB o non BLOB, le cose NON cambiano. Quando stai generando la pagina, NON puoi mandare nulla subito della immagine. Il browser prima fa una request HTTP per la pagina HTML, POI dopo per ciascuna immagine farà una request HTTP apposita.
Se le immagini fossero dentro l'applicazione e
servibili direttamente su HTTP, allora puoi mettere un <img> con il src che punta direttamente alla immagine.
Se non sono direttamente accessibili (quindi: BLOB, file altrove su file-system), allora la cosa più logica è mettere un <img> con il src che è un url che farà eseguire qualcosa lato server (es. una Servlet). E con un parametro per identificare la immagine (tipicamente il ID del record).
<img src="blabla/download-image.do?id=NNNN">
Dove quel url di esempio blabla/download-image.do sarà "mappato" su una risorsa lato server es. Servlet. La Servlet estrae il parametro id, fa una query su DB per ottenere quel record e poi:
- se da BLOB, fa lo streaming del contenuto del BLOB nella response
- se da file ovunque su file-system, apre il file e fa lo streaming del contenuto del file nella response
In entrambi i casi è bene settare i soliti header: Content-Length, Content-Type ecc..