JSP学习笔记(一百零一):在struts2中使用JasperReports

1.JasperReports的用途

JasperReports是一个用Java开发的开源的程序库,使用户能够透过它,利用Java语言来开发具有报告功能的程序。JasperReports的模版采用XML格式,从JDBC数据库中撷取合适的资料,并把资料在屏幕、打印机显示,或以PDF、HTML、XLS、CSV及XML等各种格式储存。

JasperReports的报告模板可以以iReport之类的工具来制作,只要把报告储存成XML格式,就可以让JasperReport阅读,然后再编译成为.jasper档。

 

2.iReport的使用

首先到官方下载iReport,下载地址:http://sourceforge.net/project/showfiles.php?group_id=64348

下载安装后,运行iReport,我简要的介绍一下IReport的使用:

1)连接到数据库:菜单->Data->Connections/Data Sources,New,Database JDBC connection->Next,

这里我连的是oracle数据库。

2)执行查询:菜单->Data->Report Query,输入对应的sql语句

3)插入数据:查询完以后,会把查询到的字段都列出来,把字段拖到detail区域,执行(菜单->Build->Execute with active connection),可以看到效果

4)编译:菜单->Build->Compile,会编译成jasper格式的文件,供JasperReports的使用

5)使生成的PDF支持中文:需要把iText中的iTextAsian.jar包复制到iReport安装文件夹的lib文件夹中,或者通过菜单->Classpath添加。然后在对应有中文的地方,查看Properties(属性),修改下列数据:

PDF Font:STSong-Light

PDF embedded:勾选

PDF Encoding:UniGB-UCS2-H (Chinese Simplified)

6)相关:通过菜单Build->****** Preview,可以生成其他各种格式的预览,这些格式的预览需要到对应的文件夹去查看;通过菜单Options->Settings,可以修改相关的设置,比如修改软件的语言,或者生成预览,编译文件的路径等等

 

3.JasperReports的使用

我使用JasperReports是在Struts2的基础上使用的,单独使用的话,也差不太多。

1)与Struts2的整合:

把JasperReports的包添加到项目中:jasperreports-3.x.x.jar;

把iText的包添加到项目中:iText-2.x.x.jar、iText-rtf-2.x.x.jar、iTextAsian.jar;

把struts2的JasperReports插件添加到项目中:struts2-jasperreports-plugin-2.0.x.jar;

在struts.xml配置文件中添加如下内容:

<package name="default" namespace="/" extends="struts-default">
    
<result-types>
        
<result-type name="jasper"
                class
="org.apache.struts2.views.jasperreports.JasperReportsResult" />
    
</result-types>

……
</package>

 

2)添加一个Action类:

public class TestAction extends ActionSupport {
    
    
private List queryList;
    
    @Override
    
public String execute() throws Exception {
        queryList 
= searchList();
        
return SUCCESS;
    }

    
public List getQueryList() {
        
return queryList;
    }

    
public void setQueryList(List queryList) {
        
this.queryList = queryList;
    }

}

 

3)修改struts2配置文件,输出结果:

        <action name="test" class="TestAction">
            
<result name="success" type="jasper">
                
<param name="location">/WEB-INF/test.jasper</param>
                
<param name="dataSource">queryList</param>
                
<param name="format">PDF</param>
            
</result>
        
</action>

访问test.action就会打开输出的报表了

我来讲下这几个参数的含义:

location 是指我们刚才用iReport编译生成的jasper文件

dataSource 是指我们执行的数据库查询结果,在testAction类里把这个结果查询出来,这个参数必须要有

format 是指需要输出的类型,默认是PDF,其他的输出类型有:XML、HTML、XLS、CSV、RTF ,注意这里一定要大写

除了这几个参数,还有下列参数:

delimiter 是指如果输出类型为CSV的话,指定分割符,默认为“,”

parse 是指是否解析location参数中的EL表达式,默认为 true

contentDisposition 指定disposition,默认为“inline”,如果设为“attachment”就是强制下载

documentName 输出的文件名

format 格式,默认为“PDF”,其他的有:CSV、HTML、RTF、XLS、XML

imageServletUrl 生成图形的路径

posted @ 2009-05-17 19:30  魔豆  阅读(5085)  评论(0编辑  收藏  举报