Buenas! el ejemplo que conseguí yo hace tiempo funciona muy bien para los PDF y un poco peor para los HTML, pero pruebalo a ver si te va bien.
Suerte
Código JSP:
Ver original//EL PATH DIO PROBLEMAS EN WINDOWS, TUVE QUE USAR EL PATH DE WIN...
String filename = "\\" + request.getParameter("filename");
String reporttype = request.getParameter("reporttype");
HashMap jasperParameter = new HashMap();
jasperParameter.put("IdGrupo", Long.parseLong(idGrupo));
jasperParameter.put("NumEval", Long.parseLong("" + v.size()));
String path = getServletContext().getRealPath("informes") + filename + ".jasper";
System.out.println(path);
JasperPrint jasperPrint = JasperFillManager.fillReport(path, jasperParameter, conexion.getConnection());
OutputStream ouputStream = response.getOutputStream();
JRExporter exporter = null;
if ("PDF".equalsIgnoreCase(reporttype)) {
response.setContentType("application/pdf");
exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
} else if ("RTF".equalsIgnoreCase(reporttype)) {
response.setContentType("application/rtf");
response.setHeader("Content-Disposition", "inline; filename=\"fichero.rtf\"");
exporter = new JRRtfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
} else if ("HTML".equalsIgnoreCase(reporttype)) {
exporter = new JRHtmlExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
} else if ("XLS".equalsIgnoreCase(reporttype)) {
response.setContentType("application/xls");
response.setHeader("Content-Disposition", "inline; filename=\"fichero.xls\"");
exporter = new JRXlsExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
} else if ("CSV".equalsIgnoreCase(reporttype)) {
response.setContentType("application/csv");
response.setHeader("Content-Disposition", "inline; filename=\"fichero.csv\"");
exporter = new JRCsvExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
}
try {
exporter.exportReport();
} catch (JRException e) {
throw new ServletException(e);
} finally {
if (ouputStream != null) {
try {
ouputStream.close();
} catch (IOException ex) {
}
}
}