Per far si che l’output di una pagina jsp (in realtà di una qualsiasi pagina dinamica) venga interpretato dal browser come un file da aprire o scaricare  bisogna impostare oltre al mime type della pagina anche l’header “Content-Disposition” nella response.

Esempio csv
response.setContentType("text/csv");
response.setHeader("Content-Disposition", "attachment;filename=\"export.csv\";");