使用eclipse在jsp上显示水晶报表(一)最简单例子

时间:2021-12-16 16:55:21

 

我使用的开发IDE是eclipse3.2,服务器是tomcat5.5

新建一个 Crystal reports web项目

在Target runtime选择apache tomcat v5.5

下一步中crystal reports java reporting component、dynamic web module、java是默认选中的,这三个是必需的,你也可添加struts,后面的设置会要求你添加struts的类库。在最后面默认加入示例的数据库和报表。

这样一个Crystal Reports web项目就建立了(上面的步骤应该是地球人都可以完成吧)

在里面有个CrystalReport1.rpt和CrystalReport_viewer.jsp

右键CrystalReport_viewer.jsp->运行方式->Run on Server,点击完成。

你应该就可以看到一个空的水晶报表了吧(为什么空的,当然啦,CrystalReport1.rpt本身是空的)

在看看sample reports文件夹里面,有4个示例的.rpt报表文件,右击其中任何一个,选中Crystal Reports-》创建查看器JSP,就会创建一个*-viewer.jsp文件。运行这个文件,你应该可以看到一个水晶报表了吧。

我想这对大部分人应该都是没有问题的,剩下的事情就是好好分析这个项目里面所有的东东了

-------------------------------------------------------------------------------------------------------------------------------------------------------

上面什么东西是在任何项目中实现都必须的呢?为此我特意建立一个新的tomcat项目,最好建一个简单的jsp页面测试下你的tomcat项目是否可以正常运行.

通过本人的实验,在其他项目中JSP运行水晶报表的话,需要的类文件跟配置.

1. 添加一个用户库如 CrystalReports Libraries,把下面的*.jar添加进去

commons-collections-3.1.jar,commons-configuration-1.2.jar,
commons-lang-2.1.jar,
commons-logging.jar,
Concurrent.jar,
CrystalCharting.jar
CrystalCommon.jar
CrystalContentModels.jar
CrystalDatabaseConnectors.jar
CrystalExporters.jar
CrystalExportingBase.jar
CrystalFormulas.jar
CrystalQueryEngine.jar
CrystalReportEngine.jar
CrystalReportingCommon.jar
derby.jar
icu4j.jar
jrcadapter.jar
jrcerom.jar
keycodeDecoder.jar
log4j.jar
MetafileRenderer.jar
msbase.jar
mssqlserver.jar
msutil.jar
rasapp.jar
rascore.jar
ReportPrinter.jar
rpoifs.jar
serialization.jar
URIUtil.jar
webreporting.jar
webreporting-jsf.jar
xercesImpl.jar
xml-apis.jar
Xtreme.jar

(总共36个jar,里面有一些在其他的库已经有的了,在项目中添加这个自定义库就行了)

 

2. 把上个例子中的crystalreportviewers文件夹放在WEB-INF文件夹同一目录下。这个就是你能看到水晶报表的基本框架,相当于.net里面的水晶报表控件了的源代码了。

3. 把crystal-tags-reportviewer.tld放在WEB-INF下,主要标签

 

4. web.xml 在<web-app>中间添加,主要是读入crystalreportviewers

使用eclipse在jsp上显示水晶报表(一)最简单例子    <context-param>
使用eclipse在jsp上显示水晶报表(一)最简单例子    
<param-name>crystal_image_uri</param-name>
使用eclipse在jsp上显示水晶报表(一)最简单例子    
<param-value>crystalreportviewers</param-value>
使用eclipse在jsp上显示水晶报表(一)最简单例子    
</context-param>
使用eclipse在jsp上显示水晶报表(一)最简单例子    
<context-param>
使用eclipse在jsp上显示水晶报表(一)最简单例子        
<param-name>crystal_image_use_relative</param-name>
使用eclipse在jsp上显示水晶报表(一)最简单例子        
<param-value>webapp</param-value>
使用eclipse在jsp上显示水晶报表(一)最简单例子    
</context-param>
使用eclipse在jsp上显示水晶报表(一)最简单例子

 

5. 把CRConfig.xml放在src文件夹下,水晶报表的配置文件,如果你有注册,注册码也会在这文件里面

CRConfig.xml

使用eclipse在jsp上显示水晶报表(一)最简单例子<?xml version="1.0" encoding="UTF-8"?>
使用eclipse在jsp上显示水晶报表(一)最简单例子
<CrystalReportEngine-configuration>
使用eclipse在jsp上显示水晶报表(一)最简单例子    
<reportlocation>../..</reportlocation>
使用eclipse在jsp上显示水晶报表(一)最简单例子    
<timeout>0</timeout>
使用eclipse在jsp上显示水晶报表(一)最简单例子    
<ExternalFunctionLibraryClassNames>
使用eclipse在jsp上显示水晶报表(一)最简单例子     
<classname/>
使用eclipse在jsp上显示水晶报表(一)最简单例子    
</ExternalFunctionLibraryClassNames>
使用eclipse在jsp上显示水晶报表(一)最简单例子
</CrystalReportEngine-configuration>
使用eclipse在jsp上显示水晶报表(一)最简单例子
配置超时间隔

利用 CRConfig.xml 文件,您可以配置确定何时丢弃不活动报表源的超时间隔(以分钟为单位)。这是必要的,因为不活动报表源仍然会消耗系统资源(如数据库连接、服务器内存以及临时文件使用的磁盘空间)。可以通过在 CRConfig.xml 文件中设置 timeout 标记的值来指定超时间隔。默认情况下,超时间隔为 10 分钟。通过将该值设置为 0,可以将 Java Reporting Component 配置为没有超时。

超时间隔仅适用于不活动报表 -- 正在处理的报表不会因超出此值而超时。每次成功完成一个报表源请求时,超时定时器将会重置。如果在超时间隔内没有使用某个报表源,则会丢弃该报表源,并将其资源提供给其他进程使用。

6.  在jsp页面插入这段代码

使用eclipse在jsp上显示水晶报表(一)最简单例子<%@ taglib uri="/crystal-tags-reportviewer.tld" prefix="crviewer" %>
使用eclipse在jsp上显示水晶报表(一)最简单例子
<crviewer:viewer reportSourceType="reportingComponent" viewerName="rcname-viewer" reportSourceVar="rcname" isOwnPage="true">
使用eclipse在jsp上显示水晶报表(一)最简单例子
<crviewer:report reportName="rcname.rpt" />
使用eclipse在jsp上显示水晶报表(一)最简单例子
</crviewer:viewer>

感觉像在用.net里面的水晶报表控件一样,不只viewer,连partviewer也可以的.