Se nella tua pagina JSP hai qualcosa del tipo
quando clicchi il link fai una richiesta al server di restituirti il file, però quando arriva la risposta il browser la gestisce aprendo una pagina come se fosse HTML.codice:Scarica file
Invece devi indirizzare la richiesta a una servlet che modificando il ContentType inganni il browser
Per es.
La servlet imposta il contentType con un tipo che il browser non riconosce, legge il file e lo scrive direttamente sul ServletOutputStream.codice:Scarica file
Quando la risposta arriva al browser, essendo di un tipo sconosciuto si apre la classica finestra SalvaFile.