JasperReport教程 第5课 在浏览器上展现报表
在前面的学习中,我们已经能够通过java程序来展现报表了。广大的java web开发人员,可能更想知道如果在浏览器中展现报表内容。下面的简单事例,能帮你达到这个要求。
本系列教程,前面使用的都是j2se的知识,没有涉及到java web方面的知识,现在开始加入web开发功能!
1、下载tomcat
下载地址http://apache.etoak.com/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.zip
(如果下载链接失效,到此处寻找最新的下载地址http://tomcat.apache.org/index.html)
下载完毕,解压即可
2 、给eclipse 添加WTP功能
WTP 是Web Tools Platform的缩写
WTP为eclipes增加了开发web和javaee程序的功能
想详细了解WTP的朋友,参见这里http://www.eclipse.org/webtools/
使用eclipse的安装新插件功能,详情可看这里
http://www.vogella.de/articles/Eclipse/article.html#updatemanager
首先,在eclips最上面的菜单中,选择 Help-> Install New Software
注意要选择Galileo – http://download.eclipse.org/releases/galileo
然后选择最下面的 wet,xml,and j2ee development
然后点击next…..一步一步完成即可
然后等待下载
下载完成后,会提示你重新启动eclipse,重启eclipse
至此,wtp安装完成
3、配置WTP
选择 Windows -> Preferences -> Server -> Runtime Environments. 单击 Add.
选择你的tomcat版本,我刚下载的tomcat版本是6
然后下一步,选择你刚才安装的tomcat根目录,选择你的jdk
点击 Finish按钮、点击OK.现在tomcat已经和WTP结合起来了。
4、新建web项目
之前的j2se项目不再使用,咱们此时创建一个新的web项目(感谢wtp ^_^)
选择 File -> New -> Other -> Web -> Dynamic Web Project.
录入项目名称 www.ddgrow.com.jasperreport
点击 finish. 点击 yes.打开了javaEE视图
5、添加jasperreport及其依赖包
将 jasperreport解压后目录中 lib下所有的jar包及 dist下的jasperreports-3.6.0.jar拷贝到lib目录下
6、将第一个项目中的src下的所有文件拷贝到新项目的src目录下,并且将jr1.jasper文件也拷贝过来
然后新建一个servlet(创建的时候,选择创建servlet,好处是能自己在web.xml中生成配置信息)
ddgrow.com.jasperreport.servelt.JS1
注意:由于我们的jr1.jrxml中包含了中文,如果不设置字体及编码,则中文无法显示,为了解决这个问题,我们需要修改jr1.jrxml,修改完毕后,需要重新编译为jasper文件。我们修改后的jr1.jrxml文件为
<?xml version="1.0" encoding="UTF-8"?> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="JR1" > <detail> <band height="200"> <staticText> <reportElement x="0" y="0" width="200" height="20" /> <textElement> <font pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H"/> </textElement> <text><![CDATA[www.ddgrow.com 天天成长的博客 教程]]></text> </staticText> </band> </detail> </jasperReport>
细心的读者可能看出来哪些地方修改了。
我们是添加了如下代码
<textElement> <font pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H"/> </textElement>
我解决这个中文无法显示的问题,也是从网络上查到,感谢这个博客的作者http://blog.sina.com.cn/s/blog_4b0e11bc0100e3l2.html
当然,你需要一个PDF的中文语言包 iTextAsian.jar
要了解更多请看这里http://itextpdf.sourceforge.net/
package ddgrow.com.jasperreport.servlet; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.io.StringWriter; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.jasperreports.engine.JREmptyDataSource; import net.sf.jasperreports.engine.JasperRunManager; /** * @author www.ddgrow.com 天天成长的博客 2009-10-26 */ public class JR1 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取输出流 ServletOutputStream servletOutputStream = response.getOutputStream(); // 获取已编译的模板文件 InputStream reportStream = this.getClass().getClassLoader() .getResourceAsStream("ddgrow/com/jasperreport/JR1.jasper"); try { // 生成报表并将报表流写到输出流中,根据方法名也明白是输出为pdf格式 JasperRunManager .runReportToPdfStream(reportStream, servletOutputStream, new HashMap(), new JREmptyDataSource()); // 设置输出类型为pdf response.setContentType("application/pdf"); servletOutputStream.flush(); servletOutputStream.close(); } catch (Exception e) { // 在浏览器上显示错误堆栈 StringWriter stringWriter = new StringWriter(); PrintWriter printWriter = new PrintWriter(stringWriter); e.printStackTrace(printWriter); response.setContentType("text/plain"); response.getOutputStream().print(stringWriter.toString()); } } }
如果你的eclipse没有在web.xml中生成配置信息,你需要手动添加如下内容
<servlet> <description></description> <display-name>JR1</display-name> <servlet-name>JR1</servlet-name> <servlet-class>ddgrow.com.jasperreport.servlet.JR1</servlet-class> </servlet> <servlet-mapping> <servlet-name>JR1</servlet-name> <url-pattern>/JR1</url-pattern> </servlet-mapping>
7、发布
右键单击项目,export->web->WAR file->next 然后选择 location 为tomcat的webapps 目录,然后启动tomcat
在地址中录入 http://localhost:8089/www.ddgrow.com.jasperreport/JR1
(我把tomcat的端口从8080修改成了8089,如果你没有改,默认的应该是8080也就是
http://localhost:8080/www.ddgrow.com.jasperreport/JR1)
后记:本人也是第一次使用WTP,感觉还是没有myeclipse方便好用,因此推荐大家使用myeclipse开发吧,相信环境如何搭建,通过myeclipse会更加容易的,特别是创建web项目。
至此,我相信朋友们对如何搭建开发环境都很清楚了。不管是eclipse还是myeclipse。后续的教程,我可能会使用myeclipse开发,但是不再介绍环境搭建的细节了,那样太浪费时间,呵呵,而且也显得重复了。
关于jasperreport的教程,我会一直往下写的。
然后就是写ireport的教程了。大家的关注是我写文章的动力!刚开始看的人肯定少,不过我相信以后读者会多的,因为目前我在google上搜索”jasperreport教程”,我的网站能排在第一页了。








Absolutely with you it agree. I like this idea, I completely with you agree.
Nicolas
我正想找些介绍如何用jasperreport,很感谢你