PentahoBIServer源码分析报告

上传人:痛*** 文档编号:93390722 上传时间:2022-05-20 格式:DOC 页数:63 大小:876.50KB
返回 下载 相关 举报
PentahoBIServer源码分析报告_第1页
第1页 / 共63页
PentahoBIServer源码分析报告_第2页
第2页 / 共63页
PentahoBIServer源码分析报告_第3页
第3页 / 共63页
点击查看更多>>
资源描述
. Pentaho BI源码分析报告目 录1、Pentaho BI简介32、项目概况42.1 项目生成42.2项目模块分析42.2.1 pentaho-platform-core42.2.2 pentaho-user-console92.2.3 pentaho-platform-api132.2.4pentaho-platform-scheduler142.2.5 pentaho-platform-extensions152.2.6 pentaho-platform-repository182.2.7pentaho-platform-assembly213、项目架构分析213.1架构简介213.2 Pentaho Bi架构图213.3 PentahoServer243.4 Pentaho Design Studio284、项目框架与重要包284.1 Jpivot284.2 GWT框架304.3 Jackrabbit框架434.4 Spring框架544.5 Slf4j包564.6 commons-logging日志系统615、总结631、Pentaho BI简介Pentaho BI平台是一个以流程为中心的,工作流驱动的,可扩展平台,用于解决商业智能问题。Pentaho是一个以工作流为核心的、强调面向解决方案而非工具组件的BI套件,整合了多个开源项目,目标是和商业BI相抗衡。它包括。由上可见Pentaho是一个很完善的BI解决方案。Pentaho偏向于与业务流程相结合的BI解决方案,侧重于大中型企业应用。 1、 工作流引擎:Shark and JaWE 2、 数据库:Firebird RDBMS 3、 集成管理和开发环境:Eclipse 4、 报表工具:Eclipse BIRT 5、 ETL工具:Enhydra/Kettle 6、 OLAP Server:Mondrian 7、 OLAP展示:JPivot 8、 数据挖掘组件:Weka 9、 应用服务器和Portal服务器:oss 10、 单点登陆服务与LDap认证:JOSSO 其目的在于将一系列企业级BI产品、开源软件、API等等组件集成起来,方便商务智能应 用的开发。它的出现,使得一系列的面向商务智能的独立产品如Jfree、Quartz等等,能够集成在一起,构成一项项复杂的、完整的商务智能解决方案。 目前Pentaho框架包括了Eclipse BIRT,JasperReports,Mondrian,JPivot,调度(scheduling),web服务,Kettle(数据集成工具),商业规则等多个组成部分。Pentaho的主要组成元素包括报表生成、分析、数据挖掘和工作流管理等等。这些组件通过 J2EE、WebService、SOAP、 、Java、JavaScript、Portals等技术集成到Pentaho平台中来。下面就其源码进行分析,该源码不是最新源码。2、项目概况2.1 项目生成在Pentaho官方下载最新源码、并在MyEclipse 10中部署该项目。2.2项目模块分析成功构建之后的源码由7个模块项目构成,其目录结构如下图1-1所示:2.2.1 pentaho-platform-core日志、审计和安全被建立在BI平台的核里。并且它们被自动化运行以保证,对于管理和性能监控这二者总是存在着正确的审计跟踪。日志,审计和安全置于核心中,并被自动使用,以确保总有一个精确的审计跟踪可用于管理和性能监控。1、repository:创建文档请求回复类、创建文件夹请求回复类、导航服务接口、对象服务接口,其中包括创建文档、创建文件夹、创建关系、创建策略、获取允许的action、获取属性、获取容流、更新属性、移动/删除对象、删除树结构、选择/删除容流等方法的声明;子包exception中包括:以上操作的各种异常类定义:约束冲突异常、过滤器无效异常、文件夹无效异常、未找到对象异常等;子包type:各种属性类型的定义,文档、布尔、日期、十进制、Html、Id、字符串、Xml属性类型的定义等;其目录结构如下图所示:2、Tenant:实现了api中的ITenant接口;2、 审计:包括审计项、审计帮助等类的定义;3、 输出:缓冲区容项、多容项、多输出流、简单容流、简单输出Handler处理类的定义;4、安全:security:默认情况下jdbc的角色映射器、默认情况下Ldap角色映射器、默认角色用户详细信息服务装饰器、默认的用户名比较器、日志记录拦截、安全帮助、安全参数提供程序、简单的权限掩码、简单角色、简单会话、简单用户、SpringSecurity许可管理。5、 服务:Services:action序列JCR帮助器、基于请求的处理器、消息格式化器、Soap帮助器、解决方案URI解析器、Web服务的Util;Audit(审计):审计连接、审计文件项、审计SQL项;6、 dbcp数据库连接池:connection:Pentaho的连接工厂datasource.dbcp:JNDI数据源服务、非汇集数据源服务、汇集数据源帮助器、汇集数据源系统监听器、汇集或者JNDI数据源服务;dbcp.tenantware:租客意识到登录解析数据源服务;单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。7、 Uifoundation:chart:抽象图表组件、抽象Jfreechart组件、条形图表定义、分类数据集图表组件、Jfreechart引擎、Pentaho的图表URL标签片断生成器、XY图表定义、XY序列收集图表组件;component:Action组件、Action过滤器定义、基于UI组件、全局过滤器定义、Html组件、会话过滤器定义、静态过滤器定义;8、 util:文件帮助器、文件类型插件、jar实体解析器、参数帮助器、服务器类型Util、字符串类型Util;Util.client:BI平台资源库客户端、BI平台资源库客户端导航服务、客户端util、发布util、服务异常等;logging:commons-logging日志系统,详见文章后续部分;Test-src包:相关jar:2.2.2 pentaho-user-console该user-console模块是pentaho bi这个中的目录结构如下图:以下就pentaho-user-console项目模块中的source源码进行简单分析。Mantle包:Mantle包的子包:对于创建的该gwt工程,其生成的模块配置文件如下:下面对生成的模块配置文件做简单的说明: . 其他子包:相应的jar包:2.2.3 pentaho-platform-api该应用程序编程接口的定义如下:1、action 、缓存、数据、等模块的api定义;2、引擎,包括视角、安全引擎模块的api定义;3、ITenant:core模块中包mt的Tenant类实现该接口;4、资源库,包括数据源、数据节点,实力数据库、简单数据资源库模块的api定义;5、调度器api定义;6、ui用户界面、用户设置api定义;Lib资源:2.2.4pentaho-platform-scheduler2.2.5 pentaho-platform-extensionsBI最终步骤SQLLookupRule-生成领域和经理列表UtilityComponent-生成信息,标题和附件的名称JfreeReportComponent-生成报表EmailComponent-发送报表Admin:管理员注:这个包里的GeneratedContentCleaner,引入了日志处理api包。org.apache mons.logging.Log;import org.apache mons.logging.LogFactory;Config:配置信息,包括:Console、Hibernate、IMondrianConfig、IConsoleConfig、ILdapConfig等接口的定义;设计到的jar:1、WebXml.java中import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHeDtdEntityResolver.java中XML的SAX解析器ILdapConfig.javaLDAP(轻量级目录访问协议PdiConfigXml.javaPidi18n国际化简称6、slf4jAction:Jfreereport组件加载Kettle组件加载Mondrian架构加载Mdx查询实现Xmla组件XMLA (XML for Analysis) 是一种基于简单对象访问协议(SOAP) 的 XML 协议,它是专为对驻留在 Web 上的任何标准多维数据源的通用数据访问而设计的。XMLA的好处就在于其应用级别的传输协议是SOAP,这使XMLA的服务提供者具有了WebService提供者的角色,从而各种语言编写的客户端都可以轻松访问,而不会带来额外的麻烦。XML for Analysis (XMLA) 开放标准支持对驻留在万维网上的数据源的数据访问。Microsoft SQL Server Analysis Services 按 XMLA 1.1 规实现了 XMLA。XMLA 是一种针对 Microsoft SQL Server Analysis Services 的本机协议,用于客户端应用程序与 Analysis Services 实例之间的所有交互。Analysis Services 完全支持 XML for Analysis 1.1,并且还提供了支持元数据管理、会话管理和锁定功能的扩展。与 Analysis Services 实例进行通信时,分析管理对象(AMO) 和 ADOMD.NET 都使用 XMLA 协议。Apache VFS:虚拟文件系统:如下图Servicesweb2.2.6 pentaho-platform-repository安全授权访问控制列表:该包调用Apache 的容仓库,容仓库Apache Jackrabbit将在下后续文章介绍。资源库:以上包与其子包中定义了资源库的hibernate、runtime、usersetting、webservices等.资源库2:该包与其子包中定义了pentaho本地化类、(数据访问对象DAO )异常类、文件的输出输出类、文件系统访问控制(AclDao)类、备份资源库生命周期管理器验证成功监听器、默认Pentaho的密码编码器类、简单资源库文件数据的转换类的定义等;其中jcr实现了JCR Acl元数据策略、JCR资源库文件utils等类安全的实现是由spring框架提供支持。基于角色的策略:角色授权策略角色绑DAO接口、角色授权策略类、角色绑定结构类;管理员安全action类、发布action类、资源库创建action类、调度器action类、授权策略选举者、默认的授权策略WebService类、角色授权策略角色绑定 WebService的Dao接口定义等;用户角色:该包与其子包中定义了:默认的用户角色列表Web服务类、用户角色列表Web服务接口、Pentaho角色类、Pentaho用户类、Pentaho用户角色映射类;相关的类库:。2.2.7pentaho-platform-assembly该目录结构中无源码,编译源码时,在这一层文件夹中编译,其中dist文件夹中是编译生成后,保存生成结果的文件夹。3、项目架构分析3.1架构简介Pentaho框架不同于传统的BI产品。Pentaho是一个带有商业智能组件的以流程为中心、面向解决方案的框架,它使公司可以开发针对商业智能问题的完整解决方案。Pentaho平台上执行的商业智能流程。流程可以很容易被定制,并且新流程可以被添加。Pentaho包含用来分析这些流程性能的组件和报表。Pentaho是面向解决方案的。因为平台的操作是定义在流程定义和指定每个活动的action文档里面的。这些流程和操作共同定义了一个商业智能问题的解决方案。这个BI解决方案可以很容易地与平台外部的业务流程集成在一起。方案的定义可以包含任意多个流程和操作。Pentaho平台包含一个BI框架、BI组件、一个BI工作台以与桌面信箱:1、BI框架提供日志、审计、安全、时序安排、ETL、web services 、属性存储库和规则引擎。2、BI组件包括报表、多维分析、工作流、仪表盘和数据挖掘。3、BI工作台是一套集成进Eclipse环境里的设计和管理工具。这些工具业务分析师或开发者来创建报表、仪表盘、分析模型、业务规则和BI流程。4、桌面信箱可以是第三方RSS阅读器或Pentaho Inbox Alerter 。这些信箱传递任务和报表,或者异常通知。 BI框架和BI组件构成了Pentaho Server 。BI方案被使用BI工作台(Design Studio)来设计并被发布到Pentaho Server 。Pentaho Server :是一个由工作流引擎驱动的运行时引擎, 负责协调各个BI组件的执行以与它们之间的通信。Design Studio是一个桌面的,基于Eclipse的设计和管理环境。Design Studio:产生工作流定义和解决方案(Solution)定义文件,它们被服务器用于执行BI解决方案(Solution)。3.2 Pentaho Bi架构图Pentaho bi架构图如下所示:词汇表BI-BusinessIntelligence商业智能Components组件desktopnotifications桌面通知Pre-ConfiguredInstallation预配置的安装包process流程Workbench工作台Workflow工作流Workflowitems工作流项Platform平台InboxAlerter信箱告警器/收件箱警报器Dashboard仪表盘Data Mart数据集市Auditing 审计Single Sign On 单点登录 Prototyping 原型化Key Performance Indicator(KPI)关键性能指标 Pentaho的设计思想主要体现在三个方面,一是“集成化”,二是“面向解决方案”,三是“以流程为中心”。 所 谓集成化,是指将众多不同的BI产品集成到一个统一的框架中来,使之可以相互协作。一个完整的BI应用往往需要这些BI产品能够相互协作。Pentaho 通过引入“Action”的概念,提供了一个让多种BI产品协作的机制。“Action” 是Pentaho平台提供的最基本的操作单元,它类似于一种编程语言的基本语句。所有完成具体功能的BI产品作为“插件”集成到Pentaho平台中,每 种插件为Pentaho平台提供一种或几种“Action”,每个Action有自己的输入和输出,多个Action连接起来就构成了Action序列, 完成一个较复杂的功能。Pentaho平台负责在各个Action之间传递参数,这样多种不同的BI产品便能够协同工作了。所谓解决方案 (Solution),是基于Pentaho平台的一个具体的BI应用。 Solution与Pentaho平台的关系和Web应用与应用服务器之间的关系十分类似。Pentaho平台本身作为一个Web应用部署在应用服务器 上,而Solution又作为一个“Pentaho应用”,部属在Pentaho平台上。Solution本身实质上是一系列Action序列的集合,这 些序列在网页上如何显示,如何被调用,功能如何实现完全由Pentaho平台来管理,这使得Solution的开发者,也就是Pentaho的使用者,可 以将开发工作集中于具体的BI业务逻辑的开发上,而不用去关心网页的设计、服务器的部署等等细节。流程即Action序列,是 Solution的基本组成单位,它由多个以某种顺序执行的 Action组成。Action是Pentaho平台所提供的最基本的BI操作,大到生成一个报表,小到打印一行字,都可以是一个Action。 Action之间可以顺序执行,也可以有分支或循环。Pentaho平台的“以流程为中心”是指整个平台的工作核心就是如何解释执行一个个Action序 列的描述文件。用户在做具体的BI应用开发时,也应当把精力集中在描述Action序列上。3.3 PentahoServerPentaho服务器由一个BI平台和提供给终端用户BI能力的库组成。服务器运行于一个J2EE兼容的web服务器(如Apache,OSS AS,WebSphere,WebLogic和Oracle AS)上。它们也可嵌入进其他服务器或应用中。后面的图显示了服务器中较大组件间的关系。Pentaho服务器使得BI平台的很多功能以一种一致的,熟悉的外观和行为展示给用户。例如,一个组件产生了用户可访问的报表列表,第二个以日历的方式列出了任务相关的最终期限,第三个显示了用户需要完成的当前任务。每个组件产生的容和每个用户的角色相关。组件容可以XML,HTML的形式获取或在被包含的JSR-168 portlets中显示。Pentaho portlets可被嵌入进任何支持JSR 168标准的portal,例如IBM WebSphere,OracleAS Portal和BEA WebLogic Portal。组件用于展示在线报表容的XSL和CSS样式单是可访问的,并完全可定制Pentaho服务器包含用于报表,分析,商业规则,email和桌面通知以与工作流的引擎和组件。这些组件被集成在一起,用于解决商业智能问题。在一个解决方案(Solution)中,每个子系统的行为,相互作用和用户交互被解决方案(Solution)定义文档的一个集合所定义。解决方案(Solution)定义文档是XML文档,它包含:业务流程的定义(XPDL标准)活动的定义,这些活动按需作为部分流程执行,或被web服务调用,其包含以下定义:数据源,查询,报表模板,传送和通知规则,商业规则,仪表盘和分析视图。以上所有的项之间的关系。服务器中的组件依赖于一个解决方案(Solution)引擎,可获得可用解决方案(Solution)文档,安全支持,报表,工作流项,数据,和审计信息。在服务器上可以执行多于一个的解决方案(Solution)。解决方案(Solution)定义文档可从一个服务器复制到另一个,并可被自由分发。Pentaho服务器包含了提供高级系统管理的基础设施。这包括系统监控(SMNP)服务,使用报表,Web服务支持,配置确认工具,和诊断工具。Pentaho服务器包含了提供高级流程性能报表和分析的系统和组件。这包括工作流任务中涉与到的工作流项目,单独任务,employees和services上属性的切片和切块(slice-and-dice),what-if和数据挖掘能力Pentaho服务器也支持Enterprise Application Integration (EAI)用于和operational applications进行live集成,以与Extract, Transform, and Load (ETL)能力,用于创建数据仓库和数据集市。Pentaho服务器包括一个工具,用于企业信息集成(EAI)的ETL(Extraction,Transformation和Load)。下图是一个服务器体系结构图。 解决方案(Solution)引擎对于整个体系结构是很重要的,可以管理对于BI组件的访问。BI平台提供的服务: 为外部应用程序提供了web服务 可访问和用户接口组件一样的解决方案(Solution)引擎 被工作流引擎和调度器调用以执行系统actions 审计置于平台组件中。通过从工作流和审计库中抽取历史和实时数据,平台提供了流程性能报表功能。 组件是可以被添加进系统的模块。 每个引擎有相应组件,可以将引擎集成进平台。如果创建了必要的组件的话,引擎可被其他引擎替换,或添加进平台。 服务器包括用于构建一个商业智能解决方案(Solution)所必需的组件和技术:报表,工作流,商业规则,仪表盘/分析,web服务,调度,方便的web和桌面用户接口的混合,以与审计。Pentaho BI平台和外部系统集成,这些系统提供了数据驱动报表引擎,并接收来自工作流引擎的事件。 经由简单网络管理协议(SNMP),Pentaho BI平台提供了系统监控能力。 资源库被存储进Pentaho平台外的一个RDBMS。预配置安装中嵌的资源库存储在一个开放源码数据库中,FireBird(首选)或MySQL。如果必需的话,这些数据库可被其他的关系型数据库代替,例如Oracle,SQL服务器或DB/2。Pentaho BI平台中有多个规则引擎,因此业务规则被暴露,并可被简单定制。可在系统中添加额外的规则引擎。对于组件来说,业务规则引擎是外部的,且任何组件可以使用任何规则引擎。 不是所有组件均显示在图中,其他(未显示)的组件包括email,打印,消息格式化,工作流实例属性管理,流程性能报表和what-if分析。 体系结构的一些部分使用了组合的技术,或者使用了易于等价替换的技术: 被提供的J2EE服务器是oss AS,但是可以使用任何Java JDK 1.4兼容的应用程序服务器。BI平台提供了置Java Server Pages (JSPs),servlets和portlets的用户接口,可以添加第三方或定制的JSPs,servlets或portlets。BI套件包括一个开放源码的OLAP引擎(Mondrian),但是可以使用任何MDX兼容的OLAP服务器(我们计划测试Microsoft OLAP服务和Hyperion Essbase)。 平台提供了一个基于javascript的和基于SQL的规则引擎,并基于市场需求,计划支持ILOG JRules,Drools和Jess。Pentaho BI平台集成和增强了现有的流行的第三方开放源码组件,例如:Mondrian OLAP Server and jPivot Analysis Front-EndFirebird RDBMSShark and JaWE工作流Kettle EII and ETLoss应用程序服务器,Hibernate和PortalWeka数据挖掘Eclipse工作台和BIRT报表组件JOSSO单点登录和LDAP集成Mozilla Rhino Javascript ProcessorBI平台利用开放标准和协议,包括:XMLW3Cs Extensible Markup Language,W3C的可扩展标记语言JSR-94JCPsRules Engine API,JCP的规则引擎APIJSR-168JCPs Portlet Spec,JCP的Portlet SpecSVGW3Cs Scalable Vector Graphics,W3C的可扩展适量图形(Scalable Vector Graphics)XPDLWFMCs XML Process Definition Language,WFMC的XML流程定义语言XForms W3Cs Web Forms,W3C的Web FormsMDXMicrosofts OLAP Query Language,Microsoft的OLAP查询语言WSBPEL - Oasiss Web Services Business Process Execution Language,Oasis的Web服务业务流程执行语言WSDL - W3Cs Web Services Description Language,W3C的Web服务描述语言SOAP - W3Cs Simple Object Access Protocol,W3C的简单对象访问协议服务器的资源库Pentaho服务器包括存储了定义,执行和审计一个解决方案(Solution)所必需的数据的嵌资源库: 解决方案(Solution)资源库:定义了解决方案(Solution)的元数据。 运行时资源库:工作流引擎正在管理的工作项目 审计资源库:跟踪和审计信息预配置安装提供一个预配置的实例部署,这样平台就可以快速简单的被测试,配置包括:oss应用程序服务器oss Portal V2.0,一个支持JSR-168的portal服务器 实例JSPs,它演示了平台组件的使用 实例数据 实例报表和BI流程 在实例中使用的用户和角色Pentaho Design Studio设计和管理工作台是一个基于Eclipse的桌面工作台,它提供了: 报表,仪表盘,分析视图的易于使用的设计工具。 工作流流程设计器 商业规则编辑器 数据准备的数据挖掘工作台OLAP建模工具下面提供了一个Pentaho BI工作台的体系结构图。3.4 Pentaho Design StudioPentaho Design Studio体系结构的说明:Design Studio是一个桌面的,基于Eclipse的设计和管理环境。Design Studio产生工作流定义和解决方案(Solution)定义文件,它们被服务器用于执行BI解决方案(Solution)。Design Studio运行于多平台。Design Studio审计解决方案(Solution)定义文档的创建和编辑。 一个版本控制系统用于维护解决方案(Solution)定义文档,并提供同步和版本管理能力。Design Studio允许以图形化的方式查看和编辑解决方案(Solution),报表,查询,业务规则,仪表盘和工作流。Design Studio是一个Java应用程序,安装在系统管理员和设计者的桌面计算机上。嵌体系结构Pentaho技术可被嵌入进独立的(standalone)或基于服务器的Java应用程序。 必须安装解决方案(Solution)引擎和组件包。 仅有那些组件,引擎和库是配置所必需的。 明确来说,这些是可选的: 工作流引擎,工作流资源库和运行时资源库 审计和审计资源库 应用集成/ ETL,用于数据抽取,转换和装载 用户接口组件 解决方案(Solution)库和解决方案(Solution)定义文件4、项目框架与重要包4.1 JpivotJPivot入门 展示数据queryincludeeclipse插件wcftablejsp 先从最基础的JPivot开始,JPivot可以说是Mondrian的姊妹项目,是基于Java的数据仓库表现层工具。这个项目的主页在 首先注意到两个要点: JPivot 使用 WCF (Web Component Framework) ,基于XML/XSLT来渲染Web UI组件。 JPivot是完全基于taglib的。 1. 寻找突破口从哪里开始呢,当然是先从demo入手了,在浏览器里面打开demo,点击其中的例子,发现他们指向的是localhost/mondrian/testpage.jsp?query=mondiranlocalhost/mondrian/testpage.jsp?query=xmlalocalhost/mondrian/testpage.jsp?query=fourthier这下比较清楚目标了,先研究一下testpage.jsp吧。2. testpage.jsp研究在testpage.jsp中,比较重要的一段是 其中取得参数query的值,并且匹配位置在/WEB-INF/queries/,扩展名是jsp的文件。另一句指明了query的名称是query01。注意这两个query是不一样的,wcf的query是 的参数名称叫做query,而jp的query是mondrian的query对象。在testpage.jsp的后面还定义了form,navigator,chart等等,这里先不做深入研究了。2.mondrian.jsp研究下面看看testpage.jsp用到的mondrian.jsp,打开/WEB-INF/queries/mondrian.jsp,哈哈,真是似曾相识啊。这里定义了mondrian的query,它的id是query01,还有jdbc的相关信息。以与这个query对应的mdx查询select语句。再打开xmla.jsp发现也是同样的结构,这样就比较清楚了。下面就可以依葫芦画瓢,进行我们的测试了。3.测试首先写一个mondriantest.jsp放在/WEB-INF/queries目录select Measures.Salary ON COLUMNS, Employee.employeeId.Members ON ROWS from CubeTestTest Query uses Mondrian OLAP这里用到的mondriantest.xml就是上一篇文章中写的那个。然后在浏览器地址栏输入localhost/mondrian/testpage.jsp?query=mondriantest,大功告成4.2 GWT框架一、用户界面(User Interface)在开发GWT应用程序时要注意一件事,它的开发非常像Swing,SWT,甚至是VB。你创建按钮、列表、表单,经事件监听器与之交互。你进行布局,试着让它们在一定的屏幕分辨率和屏幕尺寸下看起来更好看。主要的不同之处在于GWT应用是显示在Web浏览器上,它涉与到HTML页面。传统的Web应用程序是以一系列的HTML页面为结构,并以之导航的。1、与HTML的联系每一个GWT应用程序里面都存在一个HTML页面,它可以是一个静态的页面,或者是服务器端的页面如JSP,Struts,Ruby on Rails等。实际上,MyApp.html存在于public目录,意味着它将被一字不差的复制到最终的服务器端的部署区域,如果页面还着图片,样式表等,它们也都会复制到同样的目录下。在HTML页面代码的顶部需要meta标签来联系GWT组件。如:一个GWT组件是一个客户端代码和资源的集合。名为com.mycompany.MyApp的组件被定义到组件文件src/mycompany/MyApp.gwt.xml中。- -在逻辑上,当HTML页面载入后,GWT查看meta标签,读入xml文件并得到类名,在入口点类中开始调用代码。2、入口点(Entry Point)入口点类(MyApp)扩展了入口点接口并提供了一个方法onModuleLoad()。这个方法在构造GWT应用程序用户界面中起作用。MyProject/src/xyz/client/MyApp.java-public void onModuleLoad() final Button button=new Button(Click me); final Label label=new Label(); /.-上面的脚手架代码创建了两个GWT用户界面元素,一个按钮和一个标签。如果要追溯和浏览HTML文件,其代码底部有两个占位符用于动态容:MyProject/src/xyz/public/MyApp.html- -Java代码将通过“id=”来引用并填充你创建的按钮和标签。MyProject/src/xyz/client/MyApp.java-RootPanel.get(slot1).add(button);RootPanel.get(slot2).add(label);-上面的表定义了怎样使用小部件在屏幕上布局。还有一个更好的布局方式是使用面板(Panel)。GWT面板也是一个小部件,它能容纳一个或多个小部件并以特殊的方式管理它们。例如:你可以创建一个水平面板(Horizontal Panel),在其上加入按钮和标签,再把该面板加入到RootPanel的页面。即:RootPanel.get().add(hPanel);3、事件(Event)继续看刚才的例子,让按钮做一些事:MyProject/src/xyz/client/MyApp.java-button.addClickListener(new ClickListener() public void onClick(Widget sender) .-4、小部件(Widget)(1)文件上传 FileUpload设置输入element的名字并使用setName()方法提交到服务器。(2)伸缩表和网格 FlexTable and Grid表可以包含文本、HTML和其它任意小部件。网格总是一样的,有固定的尺寸。使用setText(),setHTML(),setWidget()方法来加入单元项,使用getCellFormatter()来定制单元的外观。单元可以跨越多行或多列。(3)Frame and NamedFrame此部件包裹在HTML的元素中,包含于任意Web站点。使用setUrl()方法来设置web页面地址。其CSS风格:.gwt-Frame(4)HTML其CSS风格:.gwt-HTML(5)Image在给定的URL显示图片的小部件。使用setUrl()方法来设置图片地址。使用addLoadListener()方法来检测图片是否载入或是否有错。其CSS风格:.gwt-Image(6)Hyperlink其CSS风格:.gwt-Hyperlink(7)Label其CSS风格:.gwt-Label(8)ListBox其CSS风格:.gwt-ListBox(9)MenuBar and MenuItem使用addItem()来加入菜单栏。其CSS风格:.gwt-MenuBarthe menu bar itself.gwt-MenuItemmenu items.gwt-MenuItem-selectedselected menu items.gwt-Frame(10)PasswordTextBox其CSS风格:.gwt-PasswordTextBox(11)TabBar常用于Tab面板的一部分。调用addTab()方法来加入TarBar,调用addTabListener()来检测聚焦前(onBeforeTabSelected())和聚集后(onTabSelected())tab被选择的情况。其CSS风格:.gwt-TarBarthe tab bar itself.gwt-TarBarFirstthe left side spacer of the bar.gwt-TabBarRestthe right side spacer of the bar.gwt-TabBarItemtabs.gwt-TabBarItem-selectedadditional style for selected tabs(12)TextArea文本域允许显示键入的多行文本。使用setCharacterWidth()和setVisibleLines()方法来设置文本域的尺寸。调用getCursorPos(),getSelectionLength(),getSelectedText()来检测当前所选择的文本。调用addKeyBoardListener()方法来监测按键情况。其CSS风格:.gwt-TextArea(13)TextBox文本框显示键入的单行文本。设置文本框的尺寸用setVisibleLength()方法。调用getCursorPos(),getSelectionLength(),getSelectedText()来检测当前所选择的文本。调用addKeyBoardListener()方法来监测按键情况。(14)Tree and TreeItem调用addItem()方法增加树子项。其CSS风格:.gwt-Treethe tree itself.gwt-TreeItema tree item.gwt-TreeItem-selecteda selected tree item5、面板(Panel)面板是一个包含多个小部件的部件。面板也可以包含其它面板。可以使用它在网格下、层面下(deck)、行、列下布局小部件。(1)AbsolutePanel允许面板重叠。(2)DeckPanel所有的小部件在一个“deck”中,一次只能显示一个小部件。用add()方法加入小部件,用showWidget()显示某个小部件。(3)DockPanel面板的中央部分是保留部分,四周东西南北均可添加部件。(4)FlowPanel使用缺省的HTML布局。(5)FocusPanel(6)FormPanel面板的容对应HTML的元素。FormPanel只包含如下元素:TextBox,PasswordTextBox,RadioButton,CheckBox,TextArea,ListBox,FileUpload。使用setName()方法把各元素名和表单域联系在一起,传递到服务器。使用setAction()方法设置URL用于提交表单。submit()实际提交表单。调用addFormHandler()检测表单是否已提交。(7)HorizontalPanel(8)HTMLPanel(9)PopupPanelpopup面板可以弹出其它小部件。(10)ScrollPanel面板的容可卷。使用构造器或者setWidget()函数定义包裹的部件。(11)StackPanel垂直的方式显示,类似于子菜单。(12)TabPanel(13)VerticalPanel 功能介绍(Web控件)Web控件是GWT表示层的核心,通过使用GWT提供的Web控件可以创建丰富的客户端画面。GWT的web组件主要分为两类:输入控件和Layout控件。输入控件主要是指向服务器提交数据,处理操作,显示服务器数据的空间,主要包括:Button,RadionButton,PushButton,ToggleButton,CheckBox,TextBox,PasswordBoxTextArea, HyperLink,ListBox,MenuBar,Tree,Table, TabBar
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!