birt 集成到现有的web应用中

时间:2022-12-24 14:59:10

 我们已经有了一个Javaweb应用,现在要实现对报表的集成

我的应用是这个样子的 

birt 集成到现有的web应用中birt 集成到现有的web应用中

说明:

1)  这里使用的是birt4.4版本的, 下载birt-runtime-4.4.zip(在官方下载),然后将birt.war解压,可以看到 logs report scriptlib webcontent WEB-INF **.jsp **.rptdesign 这些文件及文件夹

2) 将 WEB_INF下的内容放到我们自己的web应用的WEB-INF相应的目录下,将它的web.xml与我们应用的web.xml内容进行合并,birt里面的web.xml的具体配置见文档

3) birt的webcontent目录官方上一定要放到web应用的根目录的,如果要放到自己指定的目录,比如说我自己应用里面的birt目录,你需要修改birt的jar中的viewsevlets.jar中的三个类  : org.eclipse.birt.report.servlet.ViewerServlet.java   org.eclipse.birt.report.servlet.BirtEngineServlet.java   org.eclipse.birt.report.taglib.ParamDefTag.java (需要用到反编译工具 ,我这里用的是 jd-gui.exe )

4) 设计好自己的报表或者报表模板,放到配置文件指定的路径,我这里就在birt目录下,如上面的 eastcom_test_report.rpttemplate

5)我们自己的jsp页面是直接跳转到birt引擎进行处理的

<s:form id="MYFORM" action="/frameset" method="post" theme="simple">
<div id="content">
<table>
<tr>
<th width="13%"><span>*</span>模板名称:</th>
<td width="35%"><div>
<s:textfield name="reportDesign.name" maxlength="128" readonly="true" />
</div></td>

<th width="17%"><span>*</span>模板路经:</th>
<td width="35%"><div>
<s:textfield name="reportDesign.designLocation" maxlength="128" readonly="true" />
</div></td>
</tr>

<tr>
<th colspan="4" style="text-align:center;"><span>请设置以下报表参数</span></th>
</tr>
<tr>
<th colspan="4" >&nbsp;</th>
</tr>

<tr>
<th width="13%"><span>*</span>资源Key:</th>
<td width="35%">
<div>

<s:textfield name="resource_key" maxlength="128" onblur="Check.required(this)"/>

<s:hidden name="__report" value="%{reportDesign.designLocation}"></s:hidden>  ,这是指定具体的模板名称,它会到我们放模板或者报表的路径下去匹配的
</div></td>
</tr>

</table>
</div>
<div id="operator">
<div class="left"></div>
<div class="middle" onclick="Page.submit(true)">提交</div>
<div class="right"></div>
<div class="left"></div>
<div class="middle" onclick="Page.close()">关闭</div>
<div class="right"></div>
</div>
</s:form>

6) 如果要发布到websphere服务器上,需要在lib中加入 itext.1.3.jar  ,tomcat jetty是不能加的