频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

J2ee应用程序结合水晶报表:例程研究

来源:csdn 作者:纸上谈兵 出处:巧巧读书 2007-09-06 进入讨论组
下一页 1 2 
引用:http://www.qqread.com/j2ee/w329842.html

绪论

       这篇文章,我们讨论j2ee应用程序结合水晶报表的经验,这个例子叫做“Task Workbench (TWB)”。这篇文章的目的是帮助大家评估在j2ee应用程序中使用水晶报表的优点和缺点。

       TWB(www.taskworkbench.com)是提供工程和每日运作的实时信息的工作管理工具。它是一个web应用程序,jsp作为表示层,EJBs处理商业逻辑,CMP实体bean作为持久层映射到一个oracle数据库

       TWB帮助项目经理了解不同方法下项目花费时间和员工在每个项目上的消耗。当设计这个程序的时候,一个非常重要的需求就是提供给项目经理和项目管理人员一个高水平的项目成员和工程数据的视图。

       最初,我们用jsp创建报表。但是这个方法被证实太耗费时间,特别是创建联合报表的时候。所以开始寻找一个java报表解决方案。我们的基本要求是这个方案能够快速配置,并且轻松生成和修改报表,还有要容易整合到j2ee程序中。

       我们选择水晶报表因为它完全满足我们的需求。它是一个成熟的、同类产品中处于领导地位的的工具。这是一个重要的考虑,因为我们希望我们的报表方案可以随着TWB一起成长。

实现

       水晶报表被整合进TWB中有两个关键目的:第一是实现花费最小代价增加新报表和维护现有报表。第二个目的是转换到更复杂报表方案时,可以通过简单配置实现。

       Crystal Java Reporting Component 有一个jsp标签库,提供创建基本报表的简单方法。我们决定使用自己的自定义jsp标签库,来使用Crystal Java Reporting Component显示报表。这个方法允许我们定制报表外观和报表参数,这样可以保持设计简单容易。

       在jsp上唯一并且必须的java代码是一个为了得到一个显示在页面上的报表的实例而去访问工厂class的java方法。图二是一个可以请求报表的简单的jsp例子。Form传递必需的参数到view_report.jsp(图三)。

<%@ page import="com.ensemsys.twb.presentation.crystal.ReportParameter,

com.ensemsys.twb.presentation.crystal.ReportType"%>

<html>

<head>

<title>Report Viewer</title>

<link rel="stylesheet" href="style/main.css" type="text/css"/>

</head>

<body>

<h1>Simple Banked Hours Report</h1>

<p>Enter the date range for the report and click &quot;Submit&quot; to view

the report.</p>

<form method="post" action="view_report.jsp">

<input type="hidden" name="<%=ReportParameter.TYPE%>"

value="<%=ReportType.BANKED_TIME_SIMPLE%>"/>

<table>

<tr>

<td class="label">Start Date:</td>

<td>

<input type="text" name="<%=ReportParameter.START_DATE%>"

value="2003.06.30"/>

</td>

</tr>

<tr>

<td class="label">End Date:</td>

<td>

<input type="text" name="<%=ReportParameter.END_DATE%>"

value="2003.12.01"/>

</td>

</tr>

<tr>

<td>&nbsp;</td>

<td style="text-align: right">

<input type="submit" name="submitBtn" value="Submit"/>

</td>

</tr>

</table>

</form>

</body>

</html>

图二:simple_banked_time_report.jsp

<%@ page import="com.ensemsys.twb.presentation.crystal.ReportFactory,

com.ensemsys.twb.presentation.crystal.Report"%>

<%@ taglib uri="/simplereportviewer.tld" prefix="viewer" %>

<html>

<head>

<title>Report</title>

<link rel="stylesheet" href="style/main.css" type="text/css"/>

</head>

<body>

<%

// "CrystalEventTarget" is the report action name used by Crystal

final String REPORT_NAME = "CrystalEventTarget";

String reportName = (String) session.getAttribute( REPORT_NAME );

// refresh might have done via a report action

if ( reportName == null )

{

reportName = (String) request.getParameter( REPORT_NAME );

}

Report report = null;

if ( reportName == null )

{

report = ReportFactory.newInstance( request );

reportName = report.getName();

session.setAttribute( REPORT_NAME, reportName );

session.setAttribute( reportName, report );

}

else

{

report = (Report) session.getAttribute( reportName );

}

%>

<viewer:viewer report="<%=report%>" />

</body>

</html>

图三:view_report.jsp

进入讨论组讨论。
下一页 1 2 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章