首页 > 数据库 > 数据库开发技术 > JaperReport生成报表的例子
这个例子中我们依然是想生成上面用iReport生成的输出结果.
这里我们需要有一个Java工程,然后把.jrxml放在工程的某处目录中,然后在servlet中访问数据库User的account表获取所有成年用户的信息,保存在list中,求出成年用户的平均年龄,存放在map中,然后按照4.1节那样生成报表输出
[@more@]这个例子中我们依然是想生成上面用iReport生成的输出结果. 这里我们需要有一个Java工程,然后把.jrxml放在工程的某处目录中,然后在servlet中访问数据库User的account表获取所有成年用户的信息,保存在list中,求出成年用户的平均年龄,存放在map中,然后按照4.1节那样生成报表输出 首先我们在iReport中打开上节中的myFirstReport.jrxml文件,然后把它另存为你的Java工程的某个目录中,这里我使用的是一个是名为StrutsTest的Tomcat工程,我把myFirstReport.jrxml保存在WEB-INF/src/pdf/xmls目录下。然后打开这个文件,点击,把sql去掉,点击,创建userid,passwd,age三个field,去掉averAge这个value,创建一个averAge的parameter,至于动态文本的放置,除了把averAge动态文本元素的表达式改为$P{averAge},另外把这四个按纽的属性对话框TextField选项卡中的Blank when null中的勾选上,这样当某个动态文本没有获取到相应的值时,不会显示为null,而显示为空字符串 保存这个.jrxml文件。 |
然后,我们创建一个名为testmyFirstReport.jsp的网页,内容如下: 怎样获取年龄,做数据库查询,获得成年用户信息的list及存放其他非重复信息,如平均年龄的map,这是简单的根据jsp页面请求,我们就不用多说了,无论用户用什么架构封装这些功能都行,反正最后必须在session中或是request中保存有list及map,并且最后能发到我们创建PDF输出的GeneralPDFServlet中就行。下面是GeneralPDFServlet.java源代码: |
package servlets; import javax.servlet.*; import net.sf.jasperreports.engine.*; protected void doPost(HttpServletRequest req, HttpServletResponse res) public static final String XML_FILE_PATH ="E:/eclipse/workspace/StrutsTest/WEB-INF/src/pdf/xmls/"; protected void doGet(HttpServletRequest req, HttpServletResponse res) //创建response输出流,设置responxe回应的头部 //从当前session或request中获取.jrxml文件的文件名,存放成年用户信息的list,存放平均年龄的map String fileName = (String) req.getAttribute("FileName"); //调用createPdf()获得PDF输出的字节流并打印出来。 protected void doPost(HttpServletRequest req, HttpServletResponse res) //封装创建PDF输出的compile和run方法,返回最终生成的字节流 private byte[] createPdf(String fileName, List list, Map map) { } |
在这个servlet中,我们首先创建输出流和设置response回复的头部,然后再从请求或是会话中获取.jrxml文件的文件名,存放成年用户信息的list,存放平均年龄的map,这里我用的是struts架构,把测试页面的请求发给一个action,获得FileName,list,map并以request.setAttribute()方法来保存起来,然后转发到GeneratePDFServlet,所以上述goGet()方法中直接调用req.getAttribute()方法就可以获得这三个变量,如果是保存在session中,则doGet()中,必须调用req.getSession()方法获取session,然后再调用session.getAttribute()方法获取这三个变量,这是架构和封装上的问题,无论程序员怎么做都行,只要能在servlet中获取到这个变量即可。 这样我们就可以在网页中的文本框输入18,然后点击“打印报表”按纽后出现,文件打开可保存的对话框,点击打开就可以看到像上一章那样的输出结果,不过,不是JRview预览,而是一个名为myFirstReport.pdf的PDF文件。 好了,关于iReport和JasperReport整合做Java报表的话题就讨论到这儿了。由于本人系大三年级学生,上面只是暑假实习过程中为公司做了一些报表的一点经验之谈,是我花费一整天的时间写出来的,比较累,但也比较粗糙,不妥之处敬请大家指教,也欢迎编程爱好者和就iReport和JasperReport及其他话题和我讨论 |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7767849/viewspace-908381/ ,如需转载,请注明出处,否则将追究法律责任。