和现有项目有两种结合方式。
其一:直接使用birt_runtime_2.1.2中的WebViewerExample。
将其发布到C:/jakarta-tomcat-5.0.28/webapps目录下,并将其更改名称为birtApp。
在birtApp /WEB-INF/platform/plugins/com.lowagie.itext目录下新建文件夹lib,并将itext-1.3.jar和iTextAsian.jar拷入其中。
将已完成的报表,比如test.rptdesign放到birtApp的根目录下,即可通过
http://localhost:8080/birt/frameset?__report=test.rptdesign(相对路径)
或者
http://localhost:8080/birt/frameset?__report=C:/jakarta-tomcat-5.0.28/webapps/birt/test.rptdesign(绝对路径)
来访问。
若报表设置以后参数,则只需在上述url后拼接参数及值即可。
Eg: http://localhost:8080/birt/frameset?__report=test.rptdesign&sample=my+parameter
其二:在我们的程序中使用birt提供的Report Engine Api来调用报表并展现报表。
新建web项目webrpt。
在webrpt的web模块下的WEB-INF目录中新建文件夹lib,并将birt-runtime-2_1_2/ReportEngine/lib下的所有文件拷入其中。
如上,同样在WEB-INF目录中新建文件夹platform,并将birt-runtime-2_1_2/ReportEngine下的plugins和configuration拷入其中。
将itext-1.3.jar和iTextAsian.jar拷入platform/plugins/com.lowagie.itext文件夹的lib目录中(此处如果没有该目录,新建之),亦或者将所述jar包拷入WEB-INF/lib目录下也可。
在webrpt的web模块的根目录下新建images和reports文件夹。其中reports文件夹中放
已开发完成的报表文件。
当然所使用的数据库驱动也要放在lib文件夹下。
使用report engine api开发调用及展示报表的相关程序。代码如下:
WebReport.java
package com.lisa;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.birt.report.engine.api.EngineConstants;
import org.eclipse.birt.report.engine.api.HTMLRenderContext;
import org.eclipse.birt.report.engine.api.HTMLRenderOption;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
import org.eclipse.birt.report.engine.api.IReportEngine;
public class WebReport extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* Constructor of the object.
*/
private IReportEngine birtReportEngine = null;
protected static Logger logger = Logger.getLogger( "org.eclipse.birt" );
public WebReport() {
super();
}
/**
* Destruction of the servlet.
*/
public void destroy() {
super.destroy();
BirtEngine.destroyBirtEngine();
}
/**
* The doGet method of the servlet.
*
*/
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("doGet................");
//get report name and launch the engine
//resp.setContentType("text/html");
resp.setContentType( "application/pdf" );
resp.setHeader ("Content-Disposition","inline; filename=test.pdf");
String reportName = req.getParameter("ReportName");
System.out.println("reportName:::"+reportName);
ServletContext sc = req.getSession().getServletContext();
this.birtReportEngine = BirtEngine.getBirtEngine(sc);
//setup image directory
HTMLRenderContext renderContext = new HTMLRenderContext();
renderContext.setBaseImageURL(req.getContextPath()+"/images");
renderContext.setImageDirectory(sc.getRealPath("/images"));
logger.log( Level.FINE, "image directory " + sc.getRealPath("/images"));
System.out.println("stdout image directory " + sc.getRealPath("/images"));
HashMap contextMap = new HashMap();
contextMap.put( EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT, renderContext );
IReportRunnable design;
try
{
//Open report design
design = birtReportEngine.openReportDesign( sc.getRealPath("/Reports")+"/"+reportName );
//create task to run and render report
IRunAndRenderTask task = birtReportEngine.createRunAndRenderTask( design );
task.setAppContext( contextMap );
HashMap paramMap=new HashMap();
paramMap.put("param","%");
paramMap.put("sample", "lisa ok");
task.setParameterValues(paramMap);
//set output options
HTMLRenderOption options = new HTMLRenderOption();
//options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);
options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_PDF);
options.setOutputStream(resp.getOutputStream());
task.setRenderOption(options);
//run report
task.run();
task.close();
}catch (Exception e){
e.printStackTrace();
throw new ServletException( e );
}
}
/**
* The doPost method of the servlet.
*
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.println(" Post does nothing");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
/**
* Initialization of the servlet.
*
* @throws ServletException if an error occure
*/
public void init() throws ServletException {
System.out.println("init...................");
BirtEngine.initBirtConfig();
}
}
BirtEngine.java
package com.lisa;
import java.io.InputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.logging.Level;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.IReportEngine;
import javax.servlet.*;
import org.eclipse.birt.core.framework.PlatformServletContext;
import org.eclipse.birt.core.framework.IPlatformContext;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.report.engine.api.IReportEngineFactory;
public class BirtEngine {
private static IReportEngine birtEngine = null;
private static Properties configProps = new Properties();
private final static String configFile = "com/lisa/BirtConfig.properties";
public static synchronized void initBirtConfig() {
loadEngineProps();
}
public static synchronized IReportEngine getBirtEngine(ServletContext sc) {
if (birtEngine == null)
{
EngineConfig config = new EngineConfig();
if( configProps != null){
String logLevel = configProps.getProperty("logLevel");
Level level = Level.OFF;
if ("SEVERE".equalsIgnoreCase(logLevel))
{
level = Level.SEVERE;
} else if ("WARNING".equalsIgnoreCase(logLevel))
{
level = Level.WARNING;
} else if ("INFO".equalsIgnoreCase(logLevel))
{
level = Level.INFO;
} else if ("CONFIG".equalsIgnoreCase(logLevel))
{
level = Level.CONFIG;
} else if ("FINE".equalsIgnoreCase(logLevel))
{
level = Level.FINE;
} else if ("FINER".equalsIgnoreCase(logLevel))
{
level = Level.FINER;
} else if ("FINEST".equalsIgnoreCase(logLevel))
{
level = Level.FINEST;
} else if ("OFF".equalsIgnoreCase(logLevel))
{
level = Level.OFF;
}
config.setLogConfig(configProps.getProperty("logDirectory"), level);
}
config.setEngineHome("");
IPlatformContext context = new PlatformServletContext( sc );
config.setPlatformContext( context );
try
{
Platform.startup( config );
}
catch ( BirtException e )
{
e.printStackTrace( );
}
IReportEngineFactory factory = (IReportEngineFactory) Platform
.createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
birtEngine = factory.createReportEngine( config );
}
return birtEngine;
}
public static synchronized void destroyBirtEngine() {
if (birtEngine == null) {
return;
}
birtEngine.shutdown();
Platform.shutdown();
birtEngine = null;
}
public Object clone() throws CloneNotSupportedException {
throw new CloneNotSupportedException();
}
private static void loadEngineProps() {
System.out.println("loadEngineProps.....................");
try {
//Config File must be in classpath
ClassLoader cl = Thread.currentThread ().getContextClassLoader();
InputStream in = null;
in = cl.getResourceAsStream (configFile);
configProps.load(in);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
BirtConfig.properties
logDirectory=c:/temp
logLevel=FINEST
通过web页面输入要访问的报表名称,并提交到处理请求的相关servlet.
Test.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<html>
<head>
</head>
<body>
<form name="myform" action="./webReport" method="get">
<table>
<tr>
<td>报表名称(带后缀名)</td>
<td><input name="ReportName" type="text"></td>
<td><button type="submit">查看</button></td>
</tr>
</table>
</form>
</body>
</html>
修改web.xml文件如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>WebReport</servlet-name>
<servlet-class>com.lisa.WebReport</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>WebReport</servlet-name>
<url-pattern>/webReport</url-pattern>
</servlet-mapping>
</web-app>
分享到:
相关推荐
在IT行业中,BIRT(Business Intelligence and Reporting Tools)是一款开源的报表系统,它允许开发者创建丰富的数据可视化和报告。在创建BIRT报表时,CSS(Cascading Style Sheets)样式起到了至关重要的作用,它们...
Eclipse BIRT(Business Intelligence and Reporting Tools)是开源的报告生成平台,主要用于开发复杂的报表和数据可视化应用。它被设计成可嵌入到各种应用程序中,支持Java和Web环境,提供了一个灵活的、基于组件的...
### BIRT报表设计基础知识点详解 #### 一、BIRT报表设计概览 **BIRT (Business Intelligence and Reporting Tools)** 是一款开源的商务智能和报表工具,主要用于开发和部署复杂的数据报表。它提供了丰富的功能来...
**Birt汉化版本适用于4.2到4.6** Birt(Business Intelligence and Reporting Tools)是一款开源的报告和商业智能平台,它允许开发者创建复杂的报表和数据可视化应用。这个汉化版本是针对Birt 4.2.2至4.6版本的,...
标题中的“birt-runtime-4.8.0-20180626.zip”指的是一款名为BIRT(Business Intelligence and Reporting Tools)的开源报表系统,其运行时环境的版本号为4.8.0,发布日期为2018年6月26日。BIRT是一个由Eclipse基金...
BIRT(Business Intelligence and Reporting Tools)是Eclipse基金会下的一个开源报表系统项目,主要用于生成复杂的商业报告和数据可视化。在Java环境下,BIRT提供了一套API和可扩展的框架,使得开发者可以轻松地将...
在BIRT(Business Intelligence and Reporting Tools)中添加JavaScript日期控件是提高报表交互性和用户体验的重要步骤。本教程将详细介绍如何在BIRT报告中集成My97DatePicker,一个流行的JavaScript日期选择器,以...
Eclipse 3.7 Birt 汉化包是一个针对Eclipse集成开发环境(IDE)中的Business Intelligence and Reporting Tools(BIRT)插件进行本地化的软件包。BIRT是一款开源的报告生成工具,允许开发者创建复杂的报表并嵌入到...
【标题】:“Pentaho CDE 整合 Birt” 【描述】: Pentaho CDE(Component Development Environment)是Pentaho BI平台中的一个工具,用于构建交互式的Web仪表板。它允许开发者通过拖放的方式创建数据可视化应用,...
Java Web项目集成开源报表工具BIRT 本文将指导读者如何将BIRT开源报表工具集成到已有的Java Web项目中,以Birt4.4.2为例。下面是具体的步骤和知识点: 步骤1:下载BIRT 首先,读者需要下载BIRT的最新版本。在BIRT...
在本文中,我们将深入探讨如何实现BIRT报表的页面显示汉化,这涉及到对BIRT原有jar包中的英文资源文件进行替换,以显示中文界面。BIRT(Business Intelligence and Reporting Tools)是Eclipse基金会下的一个开源...
在本文中,我们将详细探讨如何将BIRT(Business Intelligence and Reporting Tools)部署到一个新的Web项目中,以便在Tomcat服务器上运行和展示BIRT报表。BIRT是一个开源报告引擎,可帮助开发人员创建数据可视化和...
在BIRT(Business Intelligence and Reporting Tools)中,数据集参数与列绑定是构建复杂报告的关键技术。本主题将深入探讨如何实现数据集之间的参数传递以及列的绑定,以充分利用BIRT的功能来创建高效的报告。 ...
在BIRT(Business Intelligence and Reporting Tools)报表设计中,分组小计和自动增加序列号是常见的需求,尤其是在处理大量数据并需要呈现清晰结构时。本文将深入探讨这两种功能的实现方法。 首先,我们来讨论...
### Eclipse BIRT 常见问题及解决方法详解 #### 一、在WEB环境下设置公共数据源 在Eclipse BIRT中,为了更好地利用资源,通常会在WEB环境中配置公共的数据源,以方便多个报表共享同一数据。以下是具体的配置步骤:...
在IT行业中,BIRT(Business Intelligence and Reporting Tools)是一个开源的报表系统,它提供了一种强大的方式来设计、创建和展示各种数据报表。本话题主要关注如何利用BIRT API动态创建表格,这是一个在数据可视...
BIRT4.4导出xlsx格式实现单sheet存储 BIRT(Business Intelligence and Reporting Tools)是一款开源的商业智能报表设计器,能够生成各种格式的报表,包括Excel文件。然而,在BIRT4.4中,默认情况下,导出的Excel...
Maximo系统是一款企业资产管理和工单管理软件,而BIRT(Business Intelligence and Reporting Tools)是Eclipse基金会的一个开源报表系统,用于生成动态、交互式的报表。本篇文章将详细介绍如何配置Eclipse开发环境...
在IT行业中,BIRT(Business Intelligence and Reporting Tools)是一个开源的报表系统,广泛应用于数据分析和信息展示。本文将深入探讨“birt-----表头排序”这一主题,旨在帮助你理解和掌握如何在BIRT中实现表格...