Originariamente inviato da user0
Non ho chiaro il codice. IN pratica, con la prima riga, si crea un stream di byte ma non ho capito come, qual è la sorgente insomma.
Una JSP alla fin fine diventa una servlet e in Java EE le servlet per ogni "request" dal client gestiscono principalmente 2 cose: un (Http)ServletRequest e un (Http)ServletResponse.
E l'output stream della response lo si ottiene dal (Http)ServletResponse proprio con quel getOutputStream(). È il "servlet container" che ti fornisce tutti questi oggetti.

Originariamente inviato da user0
La seconda riga carica il file dal disco.
No, la seconda crea solo un oggetto java.io.File che rappresenta una astrazione di un pathname.

Originariamente inviato da user0
Le response, più o meno ho capito cosa fanno: una setta il tipo di contenuto (poteva essere anche xls, rtf..), una setta la lunghezza del file, una imposta il nome che avrà il file, e l'ultima, credo, disabilita la cache del file..
Sì sono gli "header" della response.

Originariamente inviato da user0
il resto del codice non l'ho proprio capito
Il resto è un ciclo per leggere dal file a "blocchi di byte" e scrivere ogni blocco sulla response.


P.S. Non è per infierire (ci mancherebbe) ma se lavori con JSP (/Servlet) dovresti conoscere un pochino queste cose.