首先第一步贴上项目截图(少了一个rpt_report文件夹,因为是网上的所以这里没加,各位可以加下):声明该项目是网上下载。(比较简单,纯属偷懒,有现成环境)。可以自己修改,需要注意的就是蓝色标记的地方。报表存放的位置可以根据配置文件配置存放,下面有介绍。

第一:crystalreportviewers11这个文件夹可以通过官方网站中软件中获取,软件名称为(CR2008_SP1_55225)获取的方法是安装软件,软件会提供java显示水晶报表所需的所有文件,安装后的目录为:

这里是crystalreportviewers12,版本比我这里的高,我用的是网上的为crystalreportviewers11版本的。安装后就可以用这个制作水晶报表了。

第二:其中web.xml需要注意的地方就是:添加如下代码

         <display-name>SampleWeb</display-name>
<context-param>
<param-name>crystal_image_uri</param-name>
<param-value>/crystalreportviewers11</param-value>
</context-param>
<context-param>
<param-name>crystal_image_use_relative</param-name>
<param-value>webapp</param-value>
</context-param>
<jsp-config>
<taglib>
<taglib-uri>/crystal-tags-reportviewer.tld</taglib-uri>
<taglib-location>
/WEB-INF/crystal-tags-reportviewer.tld
</taglib-location>
</taglib>
</jsp-config>

crystal-tags-reportviewer.tld上面截图没有不好意思。可以自己添加下

关于不同版本的水晶报表web.xml的配置可以参考http://blog.sina.com.cn/s/blog_6ff49b9d01014hvr.html

第三:CRConfig.xml配置如下:

<?xml version="1.0" encoding="utf-8"?>
<CrystalReportEngine-configuration>
<reportlocation>../../rpt_report</reportlocation>
<timeout>10</timeout>
<keycode>AV864-01CS00G-0ZG518J</keycode>
</CrystalReportEngine-configuration>

具体<reportlocation>../../rpt_report</reportlocation>的含义自己可以百度,我在这里说下我配置的意思是,水晶报表加载的报表文件也就是rpt文件的路径在WebRoot中的rpt_report文件夹中若配置成<reportlocation>../..</reportlocation>就是说明加载的rpt文件在webroot下,具体rpt文件放在哪里可以自己灵活配置。

完成如上步骤可以算是水晶报表在myeclipse中的环境算是搭建完成。

下面是显示最简单的报表(非动态数据)

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("报表2.rpt",request.getLocale()));
crv.processHttpRequest(request,response,application,null);
%>

该jsp放在webroot下就可以了。我们这里加载的是“报表2.rpt”文件,该文件放在WebRoot中的rpt_report文件夹中,也就是刚才我们配置的路径。

若报表能够显示那说明我们从头到现在都没有问题,其中报表自己制作。至于如何制作可以参考

http://topic.csdn.net/u/20091202/20/fe299b0b-467d-4b20-aeb0-262f6492eaa4.html?25378 应该容易看懂并且掌握简单的制作。

下面是介绍后台数据显示在rpt文件中,建议各位先看下http://blog.163.com/huang_ying_lu/blog/static/269998320088108233237/楼主写的。按照里面的介绍然后自己写的话应该没有问题。

关键代码是

第一获取数据源大家应该没有什么问题。
/** *//**
*    连接数据库,通过sql查询语句进行查询,返回结果集
*/
private static ResultSet getResultSetFromQuery(String query, int scrollType)
throws SQLException, ClassNotFoundException ...{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
final String DBUSERNAME = "username";
final String DBPASSWORD = "password";
final String CONNECTION_URL = "jdbc:microsoft:sqlserver://localhost:1433;database=dname";
java.sql.Connection connection = DriverManager.getConnection(CONNECTION_URL, DBUSERNAME, DBPASSWORD);
Statement statement = connection.createStatement(scrollType, ResultSet.CONCUR_READ_ONLY);
return statement.executeQuery(query);
}
将查询出来的数据放到报表源中也就是reportClientDoc.getDatabaseController().setDataSource(resultSet,tableAlias, "resultsetTable");
    /** *//**
* 通过sql语句过滤报表数据,在.net就不用怎么惨了
*/
public boolean isReportSourceInSession(String session_name,HttpSession session) throws ReportSDKException, SQLException, ClassNotFoundException...{
boolean flag=false;
try ...{
//打开水晶报表
ReportClientDocument reportClientDoc = new ReportClientDocument();
reportClientDoc.open(REPORT_NAME, 0);
 //sql查询语句,返回的字段数必须跟报表里面的一样,不能多也不能少,并且字段的类型要跟报表的一样,其他不管是什么数据都可以
//from 表这里要填完整,如数据库名.dbo.数据库表,最好做个别名
             String query = "select tt.test_1,tt.test_2,tt.test_3,tt.test_4 from dname.dbo.test tt";
ResultSet resultSet = this.getResultSetFromQuery(query,ResultSet.TYPE_SCROLL_INSENSITIVE);
String tableAlias = reportClientDoc.getDatabaseController().getDatabase().getTables().getTable(0).getAlias();
//把结果集放进报表里,将会自动产生一个datasource
reportClientDoc.getDatabaseController().setDataSource(resultSet,tableAlias, "resultsetTable");
session.setAttribute(session_name, reportClientDoc.getReportSource());
flag=true;
return flag;
} catch (Exception e) ...{
// TODO: handle exception
e.printStackTrace();
return flag;
}

最后动态显示的jsp代码为:

<%@page import="com.JRC.util.JRC_ResultSet_DataSource" %>
<%--webreporting.jar  --%>
<%@page import="com.crystaldecisions.report.web.viewer.*" %>
<%--jrcerom.jar --%>
<%@ page import="com.crystaldecisions.reports.sdk.*" %>
<%
JRC_ResultSet_DataSource jrcd=new JRC_ResultSet_DataSource("resultSet.rpt");
if(!jrcd.isReportSourceInSession("reportSource",session)
response.sendRedirect("error.html");
CrystalReportViewer crViewer=new CrystalReportViewer();
crViewer.setOwnPage(true);
crViewer.setOwnForm(true);
crViewer.setPrintMode(CrPrintMode.ACTIVEX);
Object reportSource=session.getAttribute("reportSource");
crViewer.setReportSource(reportSource);
crViewer.processHttpRequest(request,response,this.getServletConfig().getServletContext(),null);
%>

这里值得我们注意的是关于数据源和查询的数据的字段。

第一:数据源必须和制作报表的时候用的数据源是一样的,也就是报表用的是sql2005,java连接的也是sql2005,

若用的是oracle,java连接的也是oracle。关于查询的sql语句中使用的字段也必须和制作报表用到的字段一模一样。

在制作报表的时候我们可能会用到某种表的某3个字段,在后台的sql语句我们也必须使用这个3个字段。

上述只是涉及到单表多表可能会比较麻烦一点。

本人先介绍到这里,至于多表综合显示看各位的需求了,若大家都需要我帮助各位解答的话,那各位留言吧。若有说的不够好的地方希望大家多多指正,谢谢。

资源文件:http://download.csdn.net/detail/ylovep/5213794

JAVA水晶报表从环境搭建到创建动态水晶报表相关推荐

  1. Java语言概述以及环境搭建

    Java语言概述以及环境搭建 计算机系结构 硬件 软件 人机交互方式 常见的DOS命令 Java语言的概述 Java语言的背景 Java语言的特点 Java的主要版本 JDK下载 <1>J ...

  2. 测试小白基于java的selenium自动化测试环境搭建

    本人是一个软件测试小白,自己在研究自动化测试时,真的入了不少坑,直到现在,才勉强将环境搭建了起来. 在此,我随随便便总结了一下基于java的selenium自动化测试环境搭建,送给正在学习软件测试的你 ...

  3. Docker java项目发布/开发环境搭建

    Docker java项目发布/开发环境搭建 线上部署项目/开发环境搭建命令大全 关闭windows10 指定应用 安装Docker 安装 docker-compose 关于docker容器导致硬盘耗 ...

  4. 保姆级教学——集群环境搭建及创建集群

    保姆级教学--集群环境搭建及创建集群 新建虚拟机 一些默认,加载镜像开启虚拟机,在安装位置选择自己目录,然后建立分区,首先添加 挂载点,类型标准分区,文件系统ext4 加载分区,期望给2G, 类型标准 ...

  5. Java JDK 8u221开发环境搭建

    Java JDK 8u221开发环境搭建 Java JDK 8u221下载 1.java SE8u221的下载 搭建环境 更改路径 现在我们来搭建Java开发环境 Java JDK 8u221下载 1 ...

  6. Java+Selenium3.3.1环境搭建

    一.背景和目的 selenium从2.0开始,加入了webdriver,实际上,我们说的selenium自动化测试,大部分情况都是在使用webdriver的API.现在去Selenium官网,发现最新 ...

  7. Java及Android开发环境搭建

    前言 自从接触java以来,配置环境变量折腾了好几次,也几次被搞得晕头转向,后来常常是上网查阅相关资料才解决.但是过一段时间后一些细节就会记不清了,当要在其他机子上配置时又得上网查或者查阅相关书籍,如 ...

  8. Java语言基础(环境搭建、语法、变量、类型转换、运算符、控制语句、数组)

    目录 1 Java环境搭建 1.1 JDK下载 1.2 JDK安装 1.3 JDK的安装目录 1.4 常用DOS命令 1.5 Path环境变量配置 1.6 IDEA编辑器 2 基本语法 2.1 注释 ...

  9. [ExtJs6] 环境搭建及创建项目

    1. 环境搭建 sencha cmd 和 extjs6 sdk. sencha cmd: https://www.sencha.com/products/extjs/cmd-download/ ext ...

最新文章

  1. centos6.5mysql cluster 7.4.11_完美起航-MySQLMHA高可用集群部署及故障切换(图文详解)...
  2. 欧洲AI规范先行,值得肯定与借鉴 --- 我看欧盟发布AI道德规范
  3. TensorFlow如何充分使用所有CPU核数,提高TensorFlow的CPU使用率,以及Intel的MKL加速
  4. 如果CEO只给你1个月时间,如何完成从0到1
  5. 股市永不过时的黄金铁律:零下金叉疯狂买,零上死叉立即卖
  6. C语言运算符优先级 (备忘)
  7. SpringBoot定时任务实现的两种方式介绍
  8. android 在指定位置添加布局,Android 如何动态添加 View 并显示在指定位置。
  9. iOS多线程编程--NSOperation(转)
  10. MySQL 数据库崩溃(crash)的常见原因和解决办法---发表到 《数据和云》 公众号
  11. html语言弹出窗口代码,网页弹出窗口代码
  12. 用最简单的方法解决:linux系统重启网络delaying initialization错误
  13. CPU、内存、I/O设备速度差异
  14. 得物(毒)加密算法解析 得物逆向
  15. html计算斐波那契数列通项公式,斐波那契数列指标公式
  16. 定制材料 单壁碳纳米管包裹Cu原子链/碳纳米管包裹的硅纳米线复合结构/氮掺杂碳纳米管包裹钴
  17. php warning require,Thinkphp 网站打开提示Warning: require(): open_basedir restriction in effect另一种解决方法...
  18. 计算机组成原理的exec是什么,exec...
  19. centos i219 v linux,CentOS7安装i7 6600网卡驱动I219M
  20. IDEA使用git出现SSH:无法解析主机名XXX:名称或服务未知无法从远程存储库读取错误

热门文章

  1. linux版电脑卡顿,教程方法;linux系统很卡的基本排查方法介绍电脑技巧-琪琪词资源网...
  2. 灰色模型(GM)的局限浅谈
  3. 随机生成邀请码、随机生成10位数字、随机生成英文字母+数字
  4. Eclipse中设置jsp文件 字体大小
  5. 【Matlab系列】MATLAB中显示输出数据的四种方式
  6. 联邦滤波算法封装Matlab函数
  7. 手机沙盒隔离软件_x8沙箱官网下载-X8沙箱(隔离运行双开助手)下载v0.6.8.8-cn 安卓版-西西软件下载...
  8. 使用Numpy创建数组_总结
  9. 【大数据之Linux】
  10. python脱离环境运行_脱离Python环境运行的问题所使用的工具介绍