注册 登录
重磅消息:开通VIP会员,获取平台所有项目,永久使用,详细请咨询QQ:3376762016
远程服务部署安装,售后服务,请加QQ1:3376762016,QQ2:3597230140(即将满员),QQ3:1399491757(已满)
查看: 489|回复: 0
打印 上一主题 下一主题

基于eclipse birt智能报表软件而制作的,web服务器为Tomcat6.0

[复制链接]

该用户从未签到

3518

主题

3532

帖子

66万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
668970
QQ
跳转到指定楼层
楼主
发表于 2016-5-28 16:41:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
部署报表到web项目1,基本文档结构
将报表中WebRoot下的文件按以下文档结构拷贝到项目的web root folder(如WebRoot)下
WebRoot
        --pages
        ----report(存放报表显示的jsp文件)
        --META-INF
        ----context.xml(报表的数据连接池配置)
        --report(报表文件存放的位置)       
        --webcontent(报表查看器的各种渲染页面存放位置)
        --WEB-INF
        ----lib(存放各种报表显示所需要的jar包)
        ----platform
        ------configuration
        ------plugins
        ----tlds
        -------birt.tld
        ----server-config.wsdd
        ----viewer.properties
        ----web.xml
2,部署报表的基本配置报表基本信息配置
web.xml中
        <!--
                此处配置较重要,设定报表文件存放的位置
                Report resources directory for preview. Defaults to ${birt home}
        -->
        <context-param>
                <param-name>BIRT_VIEWER_WORKING_FOLDER</param-name>
                <param-value>/report</param-value>
        </context-param>
        <!--
                Flag whether the report resources can only be accessed under the
                working folder. Defaults to true
        -->
        <context-param>
                <param-name>WORKING_FOLDER_ACCESS_ONLY</param-name>
                <param-value>true</param-value>
        </context-param>
        <!-- Report engine log level -->
        <context-param>
                <param-name>BIRT_VIEWER_LOG_LEVEL</param-name>
                <param-value>WARNING</param-value>
        </context-param>
        <!-- Defines the BIRT viewer configuration file -->
        <context-param>
                <param-name>BIRT_VIEWER_CONFIG_FILE</param-name>
                <param-value>WEB-INF/viewer.properties</param-value>
        </context-param>
        <!--
                Flag whether to allow server-side printing. Possible values are "ON"
                and "OFF". Defaults to "ON".
        -->
        <context-param>
                <param-name>BIRT_VIEWER_PRINT_SERVERSIDE</param-name>
                <param-value>ON</param-value>
        </context-param>
        <!--
                Flag whether to force browser-optimized HTML output. Defaults to true
        -->
        <context-param>
                <param-name>HTML_ENABLE_AGENTSTYLE_ENGINE</param-name>
                <param-value>true</param-value>
        </context-param>
        <!--
                Filename generator class/factory to use for the exported reports.
        -->
        <context-param>
                <param-name>BIRT_FILENAME_GENERATOR_CLASS</param-name>
                <param-value>org.eclipse.birt.report.utility.filename.DefaultFilenameGenerator</param-value>
        </context-param>
        <!--
                Viewer Filter used to set the request character encoding to UTF-8.
        -->
        <filter>
                <filter-name>ViewerFilter</filter-name>
                <filter-class>org.eclipse.birt.report.filter.ViewerFilter</filter-class>
        </filter>
        <filter-mapping>
                <filter-name>ViewerFilter</filter-name>
                <servlet-name>ViewerServlet</servlet-name>
        </filter-mapping>
        <filter-mapping>
                <filter-name>ViewerFilter</filter-name>
                <servlet-name>EngineServlet</servlet-name>
        </filter-mapping>
        <!-- Viewer Servlet Context Listener -->
        <listener>
                <listener-class>org.eclipse.birt.report.listener.ViewerServletContextListener</listener-class>
        </listener>
        <!-- Viewer HttpSession Listener -->
        <listener>
                <listener-class>org.eclipse.birt.report.listener.ViewerHttpSessionListener</listener-class>
        </listener>
        <!-- Viewer Servlet, Supports SOAP -->
        <servlet>
                <servlet-name>ViewerServlet</servlet-name>
                <servlet-class>org.eclipse.birt.report.servlet.ViewerServlet</servlet-class>
        </servlet>
        <!-- Engine Servlet -->
        <servlet>
                <servlet-name>EngineServlet</servlet-name>
                <servlet-class>org.eclipse.birt.report.servlet.BirtEngineServlet</servlet-class>
        </servlet>
        <servlet-mapping>
                <servlet-name>ViewerServlet</servlet-name>
                <url-pattern>/frameset</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
                <servlet-name>ViewerServlet</servlet-name>
                <url-pattern>/run</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
                <servlet-name>EngineServlet</servlet-name>
                <url-pattern>/preview</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
                <servlet-name>EngineServlet</servlet-name>
                <url-pattern>/download</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
                <servlet-name>EngineServlet</servlet-name>
                <url-pattern>/parameter</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
                <servlet-name>EngineServlet</servlet-name>
                <url-pattern>/document</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
                <servlet-name>EngineServlet</servlet-name>
                <url-pattern>/output</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
                <servlet-name>EngineServlet</servlet-name>
                <url-pattern>/extract</url-pattern>
        </servlet-mapping>
        <jsp-config>
                <taglib>
                        <taglib-uri>/birt.tld</taglib-uri>
                        <taglib-location>/WEB-INF/tlds/birt.tld</taglib-location>
                </taglib>
        </jsp-config>
Jndi数据源的配置
web.xml
        <!-- 配置报表的数据源 -->
        <resource-ref>
                <description>mysql jndi</description>
                <res-ref-name>jdbc/MySqlDB</res-ref-name>
                <res-type>javax.sql.DataSource</res-type>
                <res-auth>Container</res-auth>
        </resource-ref>       
context.xml配置
<?xml version='1.0' encoding='utf-8'?>
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/MySqlDB"
       auth="Container"
       type="javax.sql.DataSource"
       maxActive="5" maxIdle="-1" maxWait="10000"
       username="root" password="root"
       driverClassName="com.mysql.jdbc.Driver"
       url="jdbc:mysql://localhost:3306/creditcard?autoReconnect=true"
       />
</Context>
需要在tomcat/lib下加入mysql-connector-java-5.1.7-bin.jar
以上的jdbc/MySqlDB和报表文件中的DataSource的数据源配置属性
JNDI URL:java:comp/env/jdbc/MySqlDB  保持一致
其他详细配置信息,见配置文件参数说明
报表和struts2集成
如报表和struts2或类似框架集成,需要在web.xml中添加配置,如下
<!-- BirtFilter -->
        <filter>
                <filter-name>BirtFilter</filter-name>
                <filter-class>com.ccms.util.BirtFilter</filter-class>
        </filter>
        <filter-mapping>
                <filter-name>BirtFilter</filter-name>
                <url-pattern>/*</url-pattern>
        </filter-mapping>
BirtFilter类如下
public class BirtFilter implements Filter {
        /**
         * *容器,封装birt相关功能的uri和所对应Servlet名的键值对
         */
        Map<String, String> map = new HashMap<String, String>();
        /**
         * Context.
         */
        ServletContext context;
        /**
         * debug开关
         */
        static boolean debug = false;
        public void destroy() {
                map = null;
        }
        /**
         * 过滤birt请求,转发到对应的servlet,以绕过其他过滤器,e.g. struts2
         *
         * @param request
         * @param response
         * @param fc
         * @throws IOException
         * @throws ServletException
         */
        public void doFilter(ServletRequest request, ServletResponse response,
                        FilterChain fc) throws IOException, ServletException {
                HttpServletRequest req = (HttpServletRequest) request;
                String uri = req.getRequestURI();
                if (debug) {
                        System.out.println(">>>Requesting " + uri + "?"
                                        + req.getQueryString());
                }
                Set<String> keys = map.keySet();
                for (String key : keys) {
                        if (uri.contains(key)) {
                                RequestDispatcher rd = this.context.getNamedDispatcher(map
                                                .get(key));
                                if (rd != null) {
                                        if (debug) {
                                                System.out.println(">>>Redirect successfully executed");
                                        }
                                        // 跳过其他过滤器,跳转到对应的 servlet                                        rd.forward(request, response);
                                } else {
                                        if (debug) {
                                                System.out
                                                                .println(">>>Redirect unsuccessfully executed");
                                        }
                                }
                                return;
                        }
                }
                // 将请求交给下一个过滤器
                fc.doFilter(request, response);
        }
        public void init(FilterConfig fc) throws ServletException {
       
this.context = fc.getServletContext();
                //此处map根据需要定制
map.put("frameset", "ViewerServlet");
                map.put("preview", "EngineServlet");
                map.put("download", "EngineServlet");
               
                map.put("document", "EngineServlet");
                map.put("output", "EngineServlet");
                map.put("extract", "EngineServlet");
        }
}
配置文件参数说明1. Servlet模式说明
  查看BIRT Viewer自带的web.xml文件,可以看到有以下几个pattern:
  frameset ---- 采用Ajax框架,可以显示工具条,导航条和TOC面板,实现复杂的操作,如分页处理,导出数据,导出报表,打印等等。该模式下会自动生成report document文件(预览report design文件)到特定的目录(用户可以用参数指定,也可以定义在web.xml里)。采用Ajax,速度较慢。
  run ---- 也采用Ajax框架,但不实现frameset的复杂功能,不会生成临时的report document文件(预览report design文件),也不支持分页,这个主要是应用在BIRT Designer里的preview tab里,可以支持cancel操作,其它不怎么常用。采用Ajax,速度较慢。
  preview --- 没有用到Ajax框架,直接调用底层Engine API对报表进行render,把生成的报表内容直接输出到浏览器。这种模式和run模式调用的是相同的Engine API,唯一区别在于run采用Ajax获取报表内容,而preview直接输出到浏览器。如果要支持分页,用户需要在URL上定义__page和 __pagerange参数,这两个参数也会在后面详细说明。需要特别说明的是,在这几种预览模式中,preview的速度是最快的。
  document --- 该模式主要是为了从report design文件生成report document文件。用户可以在URL上提定document文件生成存放的路径(存放在server端),如果未指定,会直接生成 rptdocument发送到客户端浏览器,用户可以下载到客户端。
  output --- 该模式类似于frameset,会自动生成report document文件(预览report design文件),区别在于output不采用Ajax,而是将生成的报表内容直接输出到浏览器。
  parameter --- 该模式主要用于生成一个参数对话框,一般用户不常用,用户可以直接通过提供的JSP Tag--parameterPage去实现参数对话框,不需要直接调用。
  download --- 用于导出报表数据为CSV格式,当你使用frameset工具条里的导出数据功能时,会用到这个模式。
2. web.xml里的参数设置
web.xml文件里有许多参数,用户应该根据自已的需求出发对这些参数有一个深入的了解。下面我会对这些参数一一做以说明。
[BIRT_VIEWER_LOCALE]
设置默认的Locale信息,暂时没有太大意义。因为Locale的信息,首先以URL上定义的__locale为准,如果没有定义,会找到当前浏览器的 Locale信息,最后才会用到这里定义的信息。
[BIRT_VIEWER_WORKING_FOLDER]
设置BIRT Viewer的工作目录。用户可以把report design或是report document文件存放在这个目录下,这样就可以在URL上采用相对路径去预览这些报表文件了。默认是当前根目录。
当前支持三种形式:
相对路径 --- 这个相对当前的WEB应用的context root.
绝对路径
JAVA系统变量 --- 可以在启动服务器时,定义JVM的系统变量,如java –Dmyworkingfolder=D:/reports。这样就可以在web.xml中用${myworkingfolder}进行引用了。
[BIRT_VIEWER_DOCUMENT_FOLDER]
设置生成的document文件的存放路径。默认是documents目录。路径设置同上。
[WORKING_FOLDER_ACCESS_ONLY]
简单的报表访问限制控制实现,如果设为true,哪就只能预览存放在工作目录下的报表文件。默认值是false。
[BIRT_VIEWER_IMAGE_DIR]
设置生成的临时图片的存放路径。默认是report/images目录。路径设置同工作目录设置。
[BIRT_VIEWER_LOG_DIR]
设置生成的日志文件存放路径。默认是logs目录。路径设置同工作目录设置。
[BIRT_VIEWER_LOG_LEVEL]
设置日志的level,可选的值有:ALL|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST|OFF。级别 由高到低。
[BIRT_VIEWER_SCRIPTLIB_DIR]
设置用户script lib文件的存放目录( 在报表中用到的Java Event Handler Class )。默认值是scriptlib。路径设置同工作目录设置。
[BIRT_RESOURCE_PATH]
设置用户资源存放路径,这些资源包括library文件,image文件等。默认是当前根目录。路径设置同工作目录设置。
[BIRT_VIEWER_MAX_ROWS]
设置获取dataset的最大记录数。主要应用于设计报表的时候,预览报表如果记录数太多,会花费很多的时间,也可能会引起out of memory问题。默认是不限制。
[BIRT_VIEWER_MAX_CUBE_LEVELS]
设置CUBE查询的最大级数。和前面的参数作用类似。默认是不限制。
[BIRT_VIEWER_CUBE_MEMORY_SIZE]
设置在生成CUBE时,可以写在memory中的最大值,单位是MB。可以提高效率,写在内存会比直接写在硬盘快很多。但同时也要注意内存占用的问题。
[BIRT_OVERWRITE_DOCUMENT]
该参数主要用于frameset/output模式,它们会生成临时的document文件上。如果设为true,则每次刷新页面时,都会重新去生成 document文件,如果为false,则不会重新生成,只会用原来的document文件去生成报表内容。
[BIRT_VIEWER_CONFIG_FILE]
定义properties文件的路径,不可以修改。
[BIRT_VIEWER_PRINT_SERVERSIDE]
在frameset工具条上,提供有后台服务器打印的功能,该参数可以设置是打开还是关闭后台打印的功能。默认是打开。可选值为: ON 和 OFF。
[HTML_ENABLE_AGENTSTYLE_ENGINE]
这个参数是会传递给Engine的,主要用于一些CSS的兼容性方面的问题。默认值是true。
3. viewer.properties参数设置

viewer.properties文件主要是定义一些扩展的参数。
# configurable variable for JSP base href. Please uncomment the below line.
#base_url=http://127.0.0.1:8080
该设置主要应用于代理服务器的情况下,在使用代理服务器后,从request里获取的URI并非真正的URI,需要在这里定义。
# [EXTENSION SETTING]
viewer.extension.html=html
viewer.extension.pdf=pdf
viewer.extension.postscript=ps
viewer.extension.doc=doc
viewer.extension.xls=xls
viewer.extension.ppt=ppt
定义输出的报表文件的后缀名,和format相关联。
# [OUTPUT FORMAT LABEL NAME]
viewer.label.html=HTML
viewer.label.pdf=PDF
viewer.label.postscript=PostScript
viewer.label.doc=Word
viewer.label.xls=Excel
viewer.label.ppt=PowerPoint
定义导出报表对话框里的报表格式列表,和format相关联,这样名字会更有意义。
# [CSV SEPARATOR]
viewer.sep.0=,
viewer.sep.1=;
viewer.sep.2=:
viewer.sep.3=|
viewer.sep.4=\t
支持多种CSV分隔符,用户也可以增加新的分隔符(只支持char,而不是string)。但同时需要修改JSP文件和 Messages.properties文件。
# [LOGGERS]
# "logger."+class=level
# if no level is specified or the text "DEFAULT",
# then the default level from the web.xml will be used
logger.org.eclipse.datatools.connectivity.oda=DEFAULT
logger.org.eclipse.datatools.enablement.oda=DEFAULT
当前的日志都是通过Engine输出的,如果需要其它组件的日志输出,可以在这里定义。注意格式必须为logger.org……。而且该组件必须实现了 java的logger。
可以单独为该组件设置日志级别,如果设为DEFAULT,就会使用web.xml里的设置。
4. URL参数

下面是一些主要用到的URL参数。
__report
定义要预览的rptdesign文件路径,支持相对路径和绝对路径,相对路径是相对于web.xml中定义的工作目录。
__document
定义要预览的rptdocument文件路径,同样支持相对和绝对路径。相对路径是相对于web.xml中定义的工作目录。在同时定义了__report 和__document参数时,以__document为优先,如未找到相应的document文件,才会从design文件生成document文件 (frameset/output)或是直接去render这个design文件(preview/run)。
__title
定义报表显示的标题。
__showtitle
是否显示frameset模式下上方的标题部分。true | false
__toolbar
是否显示frameset模式下的工具条。true | false
__navigationbar
是否显示frameset模式下的导航条。true | false
__parameterpage
是否强制弹出或不弹出报表参数对话框。true | false
__format
输出报表的格式,默认为html。现在支持:pdf | doc | xls | postscript | ppt
__locale
设置Locale信息,如 __locale=zh_CN, 注意必须是国家加语言。
__svg
设置chart输出是否以SVG格式输出。true | false
frameset和run模式下,会采用javascript判断客户端浏览器是否支持svg,但并非对所有浏览器有效。
__bookmark
设置页面要定位的书签名字。
__istoc
指定定位的书签是不是一个TOC名字。如为true,就会根据__bookmark参数值去获取一个真正的书签名,从而实现正常的跳转。这个主要用于定位 到一个TOC上。
__rtl
指定HTML页面输出是否需要right to left。支持不同国家的阅读习惯,如阿拉伯国家是从右到左的。
__page
指定要输出的报表页数,这个依赖于报表的分页设计(page break)。
__pagerange
指定要输出的报表页数范围。如1,3,5-9。
__resourceFolder
定义资源目录路径。同web.xml中的BIRT_RESOURCE_PATH设置。
__asattachment
是否以附件方式下载报表,如生成PDF或是其它格式里。默认是inline。
__masterpage
是否要显示master page。true | false
__designer
该参数主要是应用在BIRT Designer环境下,如会读取cache的报表参数等等,一般不用。true | false
__overwrite
该参数同web.xml定义的参数,不过web.xml里是全局设置,在URL上通过参数可以定义本次操作的设置。
__imageID
内部参数,用于image的引用,一般不用。
__maxrows
设置Dataset查询的最大记录数,要注意这个设置是全局的,会影响后面所有的请求。主要用于BIRT Designer下,提高报表设计效率。同web.xml中的BIRT_VIEWER_MAX_ROWS设置。
__maxlevels
设置查询获取Cube的最大级数。同上面的__maxrows,也主要用于BIRT Designer设计环境。
同web.xml中的BIRT_VIEWER_MAX_CUBE_LEVELS设置。
__cubememsize
同web.xml中的BIRT_VIEWER_CUBE_MEMORY_SIZE参数设置。
__instanceid
如果查看BIRT输出的HTML代码,你就可以看到一些HTML Element会有一个iid的属性(如table),这个就是instanceid。这个是Engine动态生成的,不可提前预知。所以你需要从 HTML代码中得到这个值。该参数主要是为了获取reportlet(报表片断,如只输出报表中的一个Table或是一个Chart)。需要配合 __isreportlet参数。
__isreportlet
指定当前输出是不是一个reportlet。true | false
特别说明:为了输出一个reportlet,BIRT现在提供两种方式。
1. 为要输出的对象(表格或是Chart)定义一个bookmark,然后可以用下面的URL输出reportlet.
http://localhost:8080/birt/frameset?__report=test.rptdesign&__bookmark=bk&__isreportlet=true
2. 采用instanceid,但这个值事先是无法预知的,需要预览一次后从HTML代码中得到。然后用 下面的URL输出reportlet.
http://localhost:8080/birt/output?__report=test.rptdesign&__instanceid=iid&__isreportlet=true
还有就是要注意,reportlet只支持document文档。如果是预览design文档去输出reportlet,就必须要使用 frameset/output(自动生成document文档)。
__clean
BIRT里临时生成的一些文件都是和session相关的,比如临时document文件,还有image文件。这些文件也可以通过session进行管 理,这个参数就是指定是否需要在session timeout的时候清除这些临时文件。默认值是true。
true | false
__dpi
可以设置输出Chart的dpi数值。
__fittopage
暂时这个参数只对PDF和postscript格式报表有效,指定是否调整至适合页面。
__pagebreakonly
暂时这个参数只对PDF和postscript格式报表有效,指定是否只采用BIRT报表内定的分页设置。这个参数一般需要和__fittopage联合 使用。
__agentstyle
同web.xml中的HTML_ENABLE_AGENTSTYLE_ENGINE参数设置。
========================== 后台Server端打印相关参数 ==========================
__action
定义执行的指令名称。当前只支持print指令,用于后台服务器打印。
__printer
后台打印机名称。
__printer_copies
对应打印机的打印份数参数。
__printer_collate
对应打印机的双面打印参数。
__printer_duplex
对应打印机的duplex参数。
__printer_mode
对应打印机的模式参数。是单色还是彩色。
__printer_pagesize
对应打印机的纸型参数。比如A4。
===============================================================================
========================== JSP Tag相关参数  ===================================
__id
viewer的ID号,这个参数一般不常用,主要用于JSP Tag中,如在一个页面插入两个BIRT Viewer,而且预览同一个报表文件,这时候因为在一个session下面,所以需要用不同的ID去生成单独的document文件。不至于都生成同一 个document文件上,从而引发冲突。
__pattern
在JSP Tag中用于指定要提交的Servlet Pattern名字,如frameset/output/run/preview等。主要用于采用parameter模式生成parameter dialog对话框时。
__target
可以指定提交到的窗口名称。如_blank,_self等。
__nocache
指定是否会用到cache的报表参数值,这些cache的值一般保存在rptconfig文件里。在设计报表并预览的时候,可以保存输入的报表参数值。这 个在runtime的时候不常用。
===============================================================================
========================== 报表参数相关 ===================================
__isnull
指定当前的报表参数为null值,后面是报表的参数名。
__islocale
指定当前的报表参数值是和Locale/Format相关的,必须用特定的Locale/Format转化参数值(从String转化为Object)。 格式为__islocale=paramName。
__isdisplay__
指定报表参数的displayText值,格式为__isdisplay__paramName=displayText。可以在报表中引用 displayText值,如params[“p1”].displayText。
在URL上传displayText时如下(报表参数名为p1):
&__isdisplay__p1=hello
__islocale__
指定该报表参数值是Locale/Format相关的,同时给定了参数值。格式为__islocale__paramName=paramValue。
===============================================================================
========================== Export Data参数 ===================================
__exportEncoding
该参数应用于导出数据为CSV中,可以指定导出的文件编码,如GBK或是GB2312等。
__sep
该参数应用于导出数据为CSV中,可以指定数据分隔符,如逗号,冒号等。
__exportdatatype
该参数应用于导出数据为CSV中,可以指定是否输出数据类型。true | false
ResultSetName
要导出数据的记录集名字。
SelectedColumnNumber
要导出的栏位数。
SelectedColumn
要导出的数据栏位名称。
具体可以查看BirtSimpleExportDataDialog.js文件。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
java无忧网(http://www.javawyw.com),专业提供Java大作业,小作业,课程设计,毕业设计源码,答辩辅导,作业排错,bug修复,专业解答,远程部署运行项目等服务
本网站所有源码,保证能运行!
QQ:1399491757
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 返回顶部