`
farness
  • 浏览: 4581 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

birt和web项目整合

 
阅读更多
需求提出用户可一定程度配置的报表,我一个人开能力有限,选择了BIRT,试了下还比较好用,先做个demo,先解决birt和项目整合的问题:
和web项目整合最简单的莫过于,把项目里的url直接指向到birt项目的报表文件;但是这样做的话有2个问题:1.这些报表的访问权限没法控制,用户可以直接访问birt项目的url;2.报表的数据源都配置在报表里,而且birt里登录的密码是base64加密的,一旦环境有变化,改起来很麻烦

一、BIRT与工程的集成。

下面内容主要复制于http://www.birthome.cn/forum.php?mod=viewthread&tid=8606&extra=page%3D1,
最终copy  jar的时候,有些不同,可能是版本不同,我的环境是 :STS 3.5.1、Birt4.4.2
1、从eclipse官网下载birt的运行包(地址:http://www.eclipse.org/birt/),解压缩,先拷贝WebViewerExample\WEB-INF下如下文件到工程的WEB-INF目录下:
  jrun.web.xml  server-config.wsdd  viewer.properties
2、将WebViewerExample\WEB-INF\tlds下的birt.tld文件拷贝到工程的\WEB-INF\tlds下。
3、在工程的WEB-INF下建立report-engine的文件夹,在report-engine下新建如下四个文件夹  documents、images、logs 、scriptlib,其实位置和名称都不重要,可以配置
4、将WebViewerExample\ webcontent文件夹拷贝到要集成的WEB应用的根目录下
如果需要
5、在web应用的根目录下建立reportFiles文件夹,用来存放报表文件,位置和名称都不重要,可以配置
6、将web.xml中内容拷贝到工程的web.xml中,注意只要copy birt特有的内容,这个稍微有点经验的同学,应该一看就能明白
  其中web.xml文件需做如下修改(根据上面创建的目录来配置):
   a、修改BIRT_VIEWER_WORKING_FOLDER项的值为reportFiles;
   b、修改BIRT_VIEWER_DOCUMENT_FOLDER项的值为WEB-INF/report-engine/documents;
   c、修改BIRT_VIEWER_IMAGE_DIR项的值为WEB-INF/report-engine/images;
   d、修改BIRT_VIEWER_LOG_DIR项的值为WEB-INF/report-engine/logs;
   e、修改BIRT_VIEWER_SCRIPTLIB_DIR项的值为WEB-INF/report-engine/scriptlib;
  
   f、如果需调整日志级别可修改BIRT_VIEWER_LOG_LEVEL的值为ALL;
    可选的值有:ALL|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST|OFF。级别由高到低。

7、拷贝jar包,这一步放最后是因为我对示例工程中的jar包进行了清理。
下面是
axis.jar
com.ibm.icu_52.1.0.v201404241930.jar
com.lowagie.text_2.1.7.v201004222200.jar
commons-cli-1.0.jar
commons-discovery-0.2.jar
jaxrpc.jar
js.jar
org.apache.batik.css_1.6.0.v201011041432.jar
org.apache.batik.util_1.6.0.v201011041432.jar
org.eclipse.birt.runtime_4.4.0.v20140611-1043.jar
org.eclipse.datatools.connectivity.oda.consumer_3.2.5.v201109151100.jar
org.eclipse.datatools.connectivity.oda_3.3.4.v201212070447.jar
org.eclipse.datatools.connectivity_1.2.7.v201302060508.jar
org.eclipse.emf.common_2.10.0.v20140514-1158.jar
org.eclipse.emf.ecore.change_2.10.0.v20140514-1158.jar
org.eclipse.emf.ecore.xmi_2.10.0.v20140514-1158.jar
org.eclipse.emf.ecore_2.10.0.v20140514-1158.jar
org.eclipse.emf_2.6.0.v20140519-0339.jar
org.eclipse.equinox.common_3.6.200.v20130402-1505.jar
org.eclipse.equinox.registry_3.5.400.v20140428-1507.jar
org.eclipse.osgi_3.10.0.v20140606-1445.jar
org.w3c.css.sac_1.3.0.v200805290154.jar
Tidy.jar
viewservlets.jar
wsdl4j-1.5.1.jar

至此通过如上步骤已经将birt报表集成到我们的项目中来了。

二、BIRT报表数据源配置与工程统一

建好的报表如果用数据库的话,一般是这样的:
<property name="odaDriverClass">oracle.jdbc.OracleDriver</property>
<property name="odaURL">jdbc:oracle:thin:@127.0.0.1:1521:sip</property>
<property name="odaUser">monitor</property>
<encrypted-property name="odaPassword" encryptionID="base64">c2Fuc3M=</encrypted-property>

主要的问题是密码,是base64加密,如果开发环境和现场环境不一样,部署的时候非常麻烦,最好是能用工程里的jdbc配置

网上的改法很多,试下来,比较方便的修改的方法(原链接我找不到了,好像是百度文库,非常抱歉原作者)如下:
1. 在sts中选择,reportDesign 视图,
2. 选择已经集成到工程里的报表
3. 在Data explorer 里,选择datasource
4. 在右边的选择srcipt ,在上方选择“before Open”,加入下面的内容

importPackage( Packages.java.io,Packages.java.util,Packages.java.net );
importPackage( Packages.javax.servlet.http );

req = reportContext.getHttpServletRequest( );
propPath = "/WEB-INF/jdbc.properties";
if ( propPath.charAt(0) != "/" )
  propPath = "/" + propPath;

url = req.getSession( ).getServletContext( ).getResource( propPath );
if ( url != null )
{
props = new java.util.Properties();
props.load(url.openStream());
extensionProperties.odaURL = new String(props.getProperty("jdbc.url"));
extensionProperties.odaDriverClass = new String(props.getProperty("jdbc.driverclass"));
extensionProperties.odaUser = new String(props.getProperty("jdbc.username"));
extensionProperties.odaPassword = new String(props.getProperty("jdbc.password"));
}

就可以用工程里的配置了

这样的还有个问题,每个报表都需要配置;网上有个datasourcelib的方法,可以让所有的报表用统一的配置,待尝试
分享到:
评论

相关推荐

    BigBird-开源

    BigBird,一个以“大鸟”命名的开源项目,是针对Web应用程序开发的工具,尤其适用于使用Ant构建系统的开发者。它以其便捷性和灵活性为特点,致力于简化开发流程,提高开发效率。在现代软件工程中,自动化工具的使用...

    tb-goa:Thunderbird 与 Gnome 在线帐户的集成

    "tb-goa"项目正是这样的一个尝试,它实现了Thunderbird与Gnome在线帐户(GOA)的整合。 **什么是tb-goa?** tb-goa是一个Proof of Concept(PoC)项目,旨在将Gnome Online Accounts(GOA)服务集成到Thunderbird...

    flappy-leap:使用 p5.js 用 Ja​​vaScript 编写的 Flappy Bird 克隆,并与 Leap Motion 兼容

    该项目的想法是开展一项小组工作,我们必须开发一个 WEB 应用程序原型,整合通过课程和/或我们的阅读材料学到的不同概念。团队成员阿德里安·利奥塔和尼古拉斯·鲁洛使用的技术HTML5 / CSS3 JavaScript + 库跳跃...

    SSM个人博客项目

    通过这个个人博客项目,新手可以全面了解SSM框架的整合与应用,学习如何进行数据库设计、前后端交互、安全控制等Web开发中的关键技能。这是一个绝佳的实践平台,能够帮助开发者从理论走向实践,提升自身的技术能力。

    乌鸦鸟

    【文件名称列表】:"Uppy-Bird-master"这个压缩包的名称暗示了它是项目的主分支,可能包含了项目的源代码、资源文件和其他相关文档。我们可以预期以下内容: 1. `README.md`:通常包含项目简介、安装指南、使用示例...

    H5小游戏源码 小鸟飞飞飞.zip

    【标题】"H5小游戏源码 小鸟飞飞飞.zip" 提供的是一个基于HTML5技术开发的小游戏源代码,这种类型的游戏通常利用Web浏览器的JavaScript和Canvas等技术实现,无需安装,用户可以直接在网页上进行游戏。HTML5小游戏...

    AMCC推出3ware 9550SX旗舰系列

    Kom和Hummingbird的合作可能涉及到信息管理和归档解决方案的整合,两家公司在数据管理和存档技术上的协同工作,可能会为企业提供更全面的数据管理策略。 这些新闻揭示了存储行业的动态和技术创新,包括RAID控制器的...

    firefox扩展相关代码分析报告(kenko)

    XULRunner项目提供了一整套运行支持包,旨在启动基于XUL(XML User Interface Language)+XPCOM的程序,如Firefox和Thunderbird。它支持软件的安装、升级和卸载等功能。Firefox的主界面和扩展界面均由XUL文件描述,...

    taskybird-extension

    这款扩展利用 JavaScript 技术来增强 Thunderbird 的功能,使其能够更好地整合任务和日程管理。 JavaScript 作为互联网上最常用的编程语言之一,是构建 Web 应用和浏览器扩展的核心工具。在 TaskyBird Extension 中...

    EwoMail开源企业邮件系统文档

    这款邮件系统不仅提供了便捷的一键安装功能,大大简化了部署过程,而且整合了多款经过精心挑选的高性能组件,确保了邮件服务的稳定性和安全性。它特别适合那些对邮件系统要求简洁高效,同时又希望拥有一定自定义能力...

    智能喂鸟器-项目开发

    这个项目将为鸟类爱好者提供更加智能化的观察和管理工具。 首先,让我们关注项目的硬件部分。通过3D打印技术,我们可以制作出具有不同组件的喂鸟器,如`bird-feeder_7NKpCczBhN.stl`文件可能包含了喂鸟器主体的3D...

    仿微信小游戏官方实现的像素鸟游戏

    像素鸟游戏,又称Flappy Bird,是一款非常简单却极具挑战性的休闲游戏,它在移动设备上广受欢迎。本文将深入探讨如何使用JavaScript开发技术,特别是针对微信小游戏平台,来实现一款仿制的像素鸟游戏。 首先,我们...

    FlappyChenRui:A JavaScript Script game to mock Chen Rui, The CEO of Bilibili飞翔吧,陈睿(迫真)

    此外,游戏的音效和图像资源也是项目的重要组成部分。在JavaScript游戏中,通常会使用Web Audio API来处理音频,它可以播放、暂停、控制音量以及创建复杂的声音效果。至于图像,开发者可能会使用精灵表(spritesheet...

    shior2.zip

    在IT行业中,安全框架的使用至关重要,特别是在Web应用开发中。SpringBoot因其便捷性和灵活性而成为许多开发者的首选框架,而Shiro则是一款强大的安全管理框架,适用于身份验证、授权、会话管理和安全性相关的缓存。...

    armoir:蜂鸟游戏库的一系列模块

    **标题解析:** "armoir:蜂鸟游戏库的一系列模块" 这个标题表明我们正在讨论一个名为“armoir”的项目,它...通过以上知识点的讲解,开发者可以对"armoir"有一个全面的理解,并能够有效地将其整合到自己的游戏项目中。

    Struts2&ActionError&ActionMessage&Demo

    Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Java Web框架,它由Apache软件基金会维护。...这个Demo可以帮助你理解这两个类在实际项目中的应用,以及如何将它们整合到Struts2的工作流程中。

Global site tag (gtag.js) - Google Analytics