public static void printToHTML(HttpServletRequest request, HttpServletResponse response, String jasperURL, HashMap hashMap, ServletConfig servletConfig) throws ServletException, IOException {
Connection connection = null;
//读取报表文件
File reportFile = new File(servletConfig.getServletContext().getRealPath(jasperURL));
if (!reportFile.exists()) {
throw new JRRuntimeException("报表文件 *.jasper 不存在!");
}
try {
//连接数据库
connection = ConnectionManager.getConnection();
//获得Jasper输入流
InputStream inputStream = servletConfig.getServletContext().getResourceAsStream(jasperURL);
//获得JasperPrint对象
JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream, hashMap, connection);
//关闭数据库连接
connection.close();
//设置格式
//response.setContentType("text/html");
response.setContentType("text/html;charset=UTF-8");
//获得输出流 ,这里不能这样response.getOutputStream()
PrintWriter printWriter = response.getWriter();
//创建JRHtmlExporter对象
JRHtmlExporter htmlExporter = new JRHtmlExporter();
//把jasperPrint到Session里面(net.sf.jasperreports.j2ee.jasper_print)
request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
//设值jasperPrint
htmlExporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);
//设置输出
htmlExporter.setParameter(JRExporterParameter.OUTPUT_WRITER,printWriter);
//设置图片生成的Servlet(生成图片就用这个ImageServlet,并且要在XML文件里面配置 image?image=这个是Servlet的url-pattern)
//flush随机数用于重新获取图片(更新图片地址),否则条件改变后图片不会随之发生改变
htmlExporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,"image?flush="+Math.random()+"&image=");
htmlExporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");
//导出
htmlExporter.exportReport();
//关闭输出流
printWriter.close();
//关闭输入流
inputStream.close();
} catch (JRException jre) {
System.out.println("JRException:" + jre.getMessage());
} catch (Exception e) {
System.out.println("Exception:" + e.getMessage());
} finally {
if (null != connection) {
try {
connection.close();
connection = null;
} catch (SQLException sqle) {
System.out.println("SQLException:" + sqle.getMessage());
}
}
}
}