开发者运用JasperReport——报表输出到网页
前言
上一篇简单介绍了如何使用jasperReport生成报表,那么本篇将会在其基础上将报表输出到web页面上。
正题
记得在JasperReport简介中我介绍了jasperReport可以支持多种输出格式,如pdf,html等,那么在本实例中将会使用将报表以pdf的格式输出到web页面上。
1.编写servlet
我们不需要完全在上一个例子的基础上,只需要将上一个例子做到第3步即可,即将jrxml文件编译成jasper文件后即可,之后我们就需要新建一个servlet,如下:
packagecom.dan.servlet;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.PrintWriter;
importjava.io.StringWriter;
importjava.util.HashMap;
importjavax.servlet.ServletException;
importjavax.servlet.ServletOutputStream;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importnet.sf.jasperreports.engine.JREmptyDataSource;
importnet.sf.jasperreports.engine.JRException;
importnet.sf.jasperreports.engine.JasperRunManager;
/**
* 该servlet可以将报表输出到web页面
* @author zdd
*
*/
publicclass FirstReportSendToBrowserServlet extends HttpServlet {
/**
*
*/
privatestatic final long serialVersionUID = 2174316885912562306L;
@Override
protectedvoid doGet(HttpServletRequest req, HttpServletResponse resp)
throwsServletException, IOException {
ServletOutputStreamservletOutputStream = resp.getOutputStream();
//获取报表的编译文件,后面要将对其进行填充数据
InputStreamreportStream =getServletConfig().getServletContext().getResourceAsStream("/WEB-INF/classes/reports/FirstReport.jasper");
try{
//由于没有数据,故这里使用空参数和空数据源,该方法需要抛出JRException异常
JasperRunManager.runReportToPdfStream(reportStream,servletOutputStream,newHashMap(),new JREmptyDataSource());
resp.setContentType("application/pdf");
servletOutputStream.flush();
servletOutputStream.close();
}catch(JRExceptione){
StringWriterstringWriter = new StringWriter();
PrintWriterprintWriter = new PrintWriter(stringWriter);
e.printStackTrace(printWriter);
resp.setContentType("text/plain");
resp.getOutputStream().print(stringWriter.toString());
}
}
}
其实这个里面的工作跟上一个实例中FirstReportFill类的工作类似,只不过这里不仅仅是填充数据,而是使用runReportToPdfStream方法对jasper文件进行填充数据并转换成pdf文件格式进而输出到页面上,要注意写resp.setContentType("application/pdf");这句话。
2.配置web.xml
跟往常一样,要想使用servlet,你需要配置servlet:
<servlet>
<servlet-name>FirstReport</servlet-name>
<servlet-class>com.dan.servlet.FirstReportSendToBrowserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstReport</servlet-name>
<url-pattern>/FirstReport</url-pattern>
</servlet-mapping>
3.运行项目
启动项目后,输出栏会有一些错误(可能是由于jar包的问题,但是不影响运行),在地址栏输入该报表的地址即可在页面显示该报表:
小结:
该实例是jasperReport输出的一种最常见的方式,之后的例子中输出都是使用该方式。