Originariamente inviato da user0
Grazie per la risposta

Qualcosa su jsp e servlet la so, alla fine visto che la servlet è una jsp compilata (anche se, volendo può essere scritta direttamente la servlet..) non mi sono soffermato molto su questo aspetto, ancnhe perchè alla fine, si lavora sulle jsp e non sulle servlet, no?
Direi proprio di no.
Innanzitutto è la JSP che, quando viene compilata, diventa una Servlet, non il contrario: una Servlet, in generale, non ha niente a che vedere con una JSP.

In secondo luogo, le JSP sono solo l'ultimo passo della costruzione di una WebApplication: esse servono solo a "presentare" i dati elaborati da tutte le altre servlet che vengono prima (è l'ultimo passo di una catena: la presentation). Quindi, no... prima è bene capire esattamente cos'è una Servlet e cos'è una JSP, ma prima di tutto questo è bene imparare a programmare in Java (parlo di SE, le basi del linguaggio), dato che JEE è un framework di estensione molto più ampio e complesso di JSE.

tornando sull'argomento, io avevo capito che l'OutputStream era un blocco di byte grezzo proveniente dalla lettura di un quasiasi file (pdf, jpg ecc..), da definire con le response.
No: un OutputStream è un canale verso cui si può scrivere. Ci si può scrivere di tutto a seconda del tipo di OutputStream che si ha per le mani.

Un FileOutputStream è uno stream di output che scrive su File.
Una ServletOutputStream è uno stream di output che "scrive verso il client".

(e sono solo due degli innumerevoli esempi di OutputStream)

Ora, se ho ben capito, tu mi stai dicendo che OutputStream contiene l'output della servlet??
Non esattamente. L'OutputStream rappresenta il canale di comunicazione con il client.

Quindi con le response non setto i parametri del file pdf ma setto i parametri della response, giusto?
Intorcolato, ma sì, ovvio.

provo a commentare questo codice:
Non ti è chiaro il while: il metodo read() del InputStream legge "buf.length" (ovvero 8192) byte dal file. Chiaro che non tutti i file sono così piccoli. Serve un while per leggere finchè l'InputStream è arrivato alla fine, ovvero finchè non sono stati letti tutti i byte del file.

Dopo ciascuna lettura, viene scritto sul OutputStream ciò che è stato letto dal file...

Ciao.