1.安装Crystal Reports XI。
2.从以下两个目录下复制JAR包到你开发的Web程序里面
从目录1:<安装盘符>:\Program Files\Common Files\Crystal Decisions\3.0\java\lib
目录2:<安装盘符>:\Program Files\Common Files\Crystal Decisions\3.0\java\lib\external
到你开发的WebRoot/lib目录中
3.在<安装盘符>:\Program Files\Common Files\Crystal Decisions\3.0\下复制crystalreportviewers11到你开发的WebRoot目录中,和WEB-INF目录是等级的。
4.打开WebRoot的WEB_INF目录下的web.xml,在web-app里面添加
<context-param>
<param-name>crystal_image_uri</param-name>
<param-value>crystalreportviewers10</param-value>
</context-param>
这里要说明一下,如果是水晶报表10的话,对应的viewers是crystalreportviewers10,如果是水晶报表XI,对应的viewers是crystalreportviewers11,如果是水晶报表XI R2,对应的viewers是crystalreportviewers115。
5.:<安装盘符>:\Program Files\Common Files\Crystal Decisions\2.5\java里面有一个配置文件CRConfig.xml,如果现在在开发环境,可以把CRConfig复制到src根目录下,这样在部署的时候会直接放入WEB-INF/classes目录下。如果是部署环境,就直接放入WEB_INF/classes目录下。
6.然后打开CRConfig.xml文件,把“reportlocation” 元素从“../..”改为 “..”。这个是说明报表的根目录,是相对该参数配置文件而言。如果是“..”,则在classes目录的上一级目录,就是在WEB-INF目录下。如果是“../..”,则在WEB-INF目录的上一级目录,就是在WebRoot目录下。为什么要作这样的修改?这样可以防止别人获取rpt格式的报表文件。具体的内容如水晶报表样例文件中所提到
This will allow you to “hide” the Crystal Reports .rpt file in the WEB-INF directory, where it will not be directly browsable by the end user of your application. You could also hide them in /WEB-INF/classes or /WEB-INF/lib, or any other directory under WEB-INF, so long as you modify the config file accordingly.
7.把报表文件放到WEB-INF目录下,如果该报表需要连接同一目录下的数据库,把数据库也copy进去。例如我在建例子的时候使用ADO方式连接access就需要把access目录放进去。
8.在WebRoot目录下建立一jsp,例如:basic.jsp,内容如下
<%@ page language="java" pageEncoding="gb2312"%>
<%@ page import="com.crystaldecisions.reports.reportengineinterface.*"%>
<%@ page import="com.crystaldecisions.report.web.viewer.*" %>
<%
CrystalReportViewer crv = new CrystalReportViewer();
JPEReportSourceFactory jrsf = new JPEReportSourceFactory();
crv.setReportSource(jrsf.createReportSource("hr.rpt",request.getLocale()));
crv.processHttpRequest(request,response,application,null);
%>
第一行主要是为了让报表能够显示中文字而添加的,把默认的UTF编码改为gb2312编码。
9.把Web Application部署好后,例如在tomcat下。打开浏览器,键入:http://localhost:8080/<Web Application的名字>/basic.jsp。
我原来是参考官方教程来做的,发现还是有很多不同的地方,调了大半天后才调通,因此写下整个过程。在实际开发中,不可能使用basic.jsp这种架构来编写程序的,还是要在java代码中调用,才能够更灵活的调用viewer。
转载于:https://www.cnblogs.com/zjblue/archive/2006/08/15/477577.html