通过Java服务页面标签生成超文本置标语言代码的方法与装置转让专利

申请号 : CN200710307876.0

文献号 : CN101470591B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘建军

申请人 : 华为技术有限公司

摘要 :

本发明实施例公开了一种通过Java服务页面标签生成超文本置标语言代码的方法,使用两种不同类型的JSP标签:容器标签和组件标签,将布局逻辑从组件标签中剥离出来,通过组件标签所在的容器标签找到对应的布局管理器实现组件标签的布局。本发明实施例还提供用于通过JSP标签生成HTML代码的装置。本发明实施例由于采用与容器标签关联的布局管理器负责布局代码的生成,使得开发人员无需直接编写布局代码,开发简单;并且,组件标签自身与布局逻辑无关,可通过不同的容器标签实现不同的布局需求,使用灵活而不易出错。

权利要求 :

1.一种通过Java服务页面标签生成超文本置标语言代码的方法,其特征在于,包括:执行容器标签的容器开始标签,包括,调用与所述容器标签对应的布局管理器生成布局开始代码;

执行所述容器标签中的组件标签,包括,根据所述组件标签所在的容器标签获得与所述容器标签对应的布局管理器,调用所述布局管理器生成与所述组件标签关联的组件布局开始代码和组件布局结束代码;

执行所述容器标签的容器结束标签,包括,调用与所述容器标签对应的布局管理器,生成布局结束代码。

2.根据权利要求1所述的方法,其特征在于:

所述执行容器标签的容器开始标签还包括,在生成布局开始代码后,生成单一对象的容器内容代码;或者,所述执行容器标签的容器结束标签还包括,生成单一对象的容器内容代码,然后再执行所述调用布局管理器的操作;或者,所述执行容器标签的容器开始标签还包括,在生成布局开始代码后,生成容器内容开始代码;所述执行容器标签的容器结束标签还包括,生成容器内容结束代码,然后再执行所述调用布局管理器的操作。

3.根据权利要求1所述的方法,其特征在于:所述容器标签中包括一个以上的组件标签,在所述执行容器开始标签和执行容器结束标签的步骤之间,分别执行各个组件标签。

4.根据权利要求1所述的方法,其特征在于:

所述执行容器标签中的组件标签还包括,在生成组件布局开始代码和组件布局结束代码的步骤之间,生成组件内容代码,所述组件内容代码为单一对象的组件内容代码或由组件内容开始代码和组件内容结束代码组成。

5.根据权利要求1~3任意一项所述的方法,其特征在于,所述调用布局管理器生成与组件标签关联的组件布局开始代码和组件布局结束代码具体为:执行所述组件标签的组件开始标签,包括,根据所述组件标签所在的容器标签获得与所述容器标签对应的布局管理器,调用所述布局管理器生成组件布局开始代码;

执行所述组件标签的组件结束标签,包括,根据所述组件标签所在的容器标签获得与所述容器标签对应的布局管理器,调用所述布局管理器生成组件布局结束代码。

6.根据权利要求5所述的方法,其特征在于:

所述执行组件标签的组件开始标签还包括,在生成组件布局开始代码后,生成单一对象的组件内容代码;或者,所述执行组件标签的组件结束标签还包括,生成单一对象的组件内容代码,然后再执行所述获得布局管理器的操作;或者,所述执行组件标签的组件开始标签还包括,在生成组件布局开始代码后,生成组件内容开始代码;所述执行组件标签的组件结束标签还包括,生成组件内容结束代码,然后再执行所述获得布局管理器的操作。

7.根据权利要求1~3任意一项所述的方法,其特征在于,所述组件标签中包括三种类型的组件:前组件、主组件、后组件;所述组件布局开始和结束代码包括该三种类型的组件的布局开始和结束代码;所述调用布局管理器生成与组件标签关联的组件布局开始代码和组件布局结束代码具体为:执行所述组件标签的组件开始标签,包括,根据所述组件标签所在的容器标签获得与所述容器标签对应的布局管理器;获取所述组件标签中的前组件,调用所述布局管理器生成前组件布局开始代码和前组件布局结束代码;调用所述布局管理器生成主组件布局开始代码;

执行所述组件标签的组件结束标签,包括,根据所述组件标签所在的容器标签获得与所述容器标签对应的布局管理器,调用所述布局管理器生成主组件布局结束代码;获取所述组件标签中的后组件,调用所述布局管理器生成后组件布局开始代码和后组件布局结束代码。

8.根据权利要求7所述的方法,其特征在于:

所述执行组件标签的组件开始标签还包括,在生成前组件布局开始代码和前组件布局结束代码的步骤之间,生成单一对象的前组件内容代码或分别生成前组件内容开始代码和前组件内容结束代码;和/或,所述执行组件标签的组件结束标签还包括,在生成后组件布局开始代码和后组件布局结束代码的步骤之间,生成单一对象的后组件内容代码或分别生成后组件内容开始代码和后组件内容结束代码;和/或,所述执行组件标签的组件开始标签还包括,在生成主组件布局开始代码后,生成单一对象的主组件内容代码;或者,所述执行组件标签的组件结束标签还包括,生成单一对象的主组件内容代码,然后再执行所述获得布局管理器的操作;或者,所述执行组件标签的组件开始标签还包括,在生成组件布局开始代码后生成主组件内容开始代码,所述执行组件标签的组件结束标签还包括,生成主组件内容结束代码然后再执行所述获得布局管理器的操作。

9.根据权利要求7所述的方法,其特征在于:

所述获取组件标签中的前组件的步骤中,获取的前组件为一个以上,分别生成各个前组件的前组件布局开始代码和前组件布局结束代码,然后再执行所述生成主组件布局开始代码的步骤;和/或,所述获取组件标签中的后组件的步骤中,获取的后组件为一个以上,分别生成各个后组件的后组件布局开始代码和后组件布局结束代码。

10.根据权利要求1~3任意一项所述的方法,其特征在于,所述组件标签中包括一个或一个以上的组件;所述调用布局管理器生成与组件标签关联的组件布局开始代码和组件布局结束代码具体为:执行所述组件标签的组件开始标签;

执行所述组件标签的组件结束标签,包括,根据所述组件标签所在的容器标签获得与所述容器标签对应的布局管理器;获取所述组件标签中的各个组件;调用所述布局管理器分别生成各个组件的组件布局开始代码和组件布局结束代码。

11.根据权利要求10所述的方法,其特征在于:

所述执行组件标签的组件结束标签还包括,在生成各个组件的组件布局开始代码和组件布局结束代码的步骤之间,生成单一对象的组件内容代码或分别生成组件内容开始代码和组件内容结束代码。

12.一种用于通过Java服务页面标签生成超文本置标语言代码的装置,其特征在于,包括Java服务页面引擎、容器执行单元和组件执行单元;

所述Java服务页面引擎,用于执行Java服务页面文件,在执行到容器标签时调用所述容器执行单元进行执行,在执行到组件标签时,调用所述组件执行单元进行执行;

所述容器执行单元,具有获取布局管理器的接口,用于:根据所述Java服务页面引擎在执行容器标签的容器开始标签时的调用,调用与所述容器标签对应的布局管理器生成布局开始代码;根据所述Java服务页面引擎在执行容器标签的容器结束标签时的调用,调用与所述容器标签对应的布局管理器生成布局结束代码;

所述组件执行单元,具有获取布局管理器的接口,用于:根据所述Java服务页面引擎在执行组件标签时的调用,根据所述组件标签所在的容器标签获得与所述容器标签对应的布局管理器,调用所述布局管理器生成与所述组件标签关联的组件布局开始代码和组件布局结束代码。

13.根据权利要求12所述的装置,其特征在于:所述容器执行单元还具有设置布局管理器的接口;所述容器执行单元还用于,根据所述Java服务页面引擎在执行容器标签时的调用,对与所述容器标签对应的布局管理器进行设置。

14.根据权利要求12或13所述的装置,其特征在于,所述组件执行单元包括:

第一开始单元,用于根据所述Java服务页面引擎在执行组件标签的组件开始标签时的调用,根据所述组件标签所在的容器标签获得与所述容器标签对应的布局管理器,调用所述布局管理器生成组件布局开始代码;

第一结束单元,用于根据所述Java服务页面引擎在执行组件标签的组件结束标签时的调用,根据所述组件标签所在的容器标签获得与所述容器标签对应的布局管理器,调用所述布局管理器生成组件布局结束代码。

15.根据权利要求12或13所述的装置,其特征在于,所述组件执行单元包括:

第二开始单元,用于根据所述Java服务页面引擎在执行组件标签的组件开始标签时的调用,根据所述组件标签所在的容器标签获得与所述容器标签对应的布局管理器;获取所述组件标签中的前组件,调用所述布局管理器生成前组件布局开始代码和前组件布局结束代码;调用所述布局管理器生成主组件布局开始代码;

第二结束单元,用于根据所述Java服务页面引擎在执行组件标签的组件结束标签时的调用,根据所述组件标签所在的容器标签获得与所述容器标签对应的布局管理器,调用所述布局管理器生成主组件布局结束代码;获取所述组件标签中的后组件,调用所述布局管理器生成后组件布局开始代码和后组件布局结束代码。

16.根据权利要求12或13所述的装置,其特征在于,所述组件执行单元包括:

第三开始单元,用于根据所述Java服务页面引擎在执行组件标签的组件开始标签时的调用,执行所述组件开始标签;

第三结束单元,用于根据所述Java服务页面引擎在执行组件标签的组件结束标签时的调用,根据所述组件标签所在的容器标签获得与所述容器标签对应的布局管理器;获取所述组件标签中的各个组件;调用所述布局管理器分别生成各个组件的组件布局开始代码和组件布局结束代码。

说明书 :

通过Java服务页面标签生成超文本置标语言代码的方法

与装置

技术领域

[0001] 本发明涉及页面布局技术领域,具体涉及通过Java服务页面(JSP:JavaServer Page)标签实现页面控件布局的方法以及相应的用于通过JSP标签生成超文本置标语言(HTML:HyperText Markup Language)代码的装置。

背景技术

[0002] 目前,为简化书写HTML代码的难度,使开发人员更能按照页面控件的编写习惯开发页面,通过JSP标签技术生成页面控件的应用越来越普遍。在这些应用中,通过JSP标签实现页面控件布局是一项重要的内容,通常采用如下两种方法:
[0003] 一、直接使用HTML代码实现布局的要求,将JSP标签嵌套在用于布局的代码中。示例如下:
[0004]
[0005] 上例中,分别为JSP标签A和B(开始和结束标签合并在一起);和
分别为布局开始和结束代码,前后两组和分别为嵌套在其中的JSP标签A和B的布局开始和结束代码。该布局将显示上下两个区域,在上方的区域中显示标签A的内容,在下方的区域中显示标签B的内容。
[0006] 本发明的发明人在对此方法的研究和实践过程中发现,在这个方法中,与布局相关的开发难度并没有被降低,开发人员需要熟悉HTML代码才能编写出与页面布局相关的代码。
[0007] 二、由JSP标签同时生成自身布局的HTML代码。示例如下:
[0008]
[0009] 上例中,分别为JSP标签form的开始和结束标签。在执行上述JSP标签的过程中,各个JSP标签不仅需要生成自身内容的HTML代码,还要生成自身布局的HTML代码,如下所示:
[0010]
标签A的内容
标签B的内容
[0011] 其中,和
即为由标签form生成的布局代码;前后两组和分别为标签A和B生成的布局代码。
[0012] 本发明的发明人在对此方法的研究和实践过程中发现,在这个方法中,虽然开发人员无需手动书写HTML代码来实现布局,但是由于布局逻辑固定在标签中,对于已经编写完成的标签而言,无法满足灵活多变的布局需求。此外,若不了解标签所使用的布局逻辑,还容易造成标签执行后所生成HTML代码间布局的冲突,破坏页面整体的布局结构。

发明内容

[0013] 本发明实施例提供页面控件布局方法和相应的装置,能够简单、灵活的实现JSP标签的布局要求。
[0014] 一种通过Java服务页面标签生成超文本置标语言代码的方法,包括:执行容器标签的容器开始标签,包括,调用与所述容器标签对应的布局管理器生成布局开始代码;执行所述容器标签中的组件标签,包括,根据所述组件标签所在的容器标签获得与所述容器标签对应的布局管理器,调用所述布局管理器生成与所述组件标签关联的组件布局开始代码和组件布局结束代码;执行所述容器标签的容器结束标签,包括,调用与所述容器标签对应的布局管理器,生成布局结束代码。
[0015] 一种用于通过JSP标签生成HTML代码的装置,包括:包括Java服务页面引擎、容器执行单元和组件执行单元;所述Java服务页面引擎,用于执行Java服务页面文件,在执行到容器标签时调用所述容器执行单元进行执行,在执行到组件标签时,调用所述组件执行单元进行执行;所述容器执行单元,具有获取布局管理器的接口,用于:根据所述Java服务页面引擎在执行容器标签的容器开始标签时的调用,调用与所述容器标签对应的布局管理器生成布局开始代码;根据所述Java服务页面引擎在执行容器标签的容器结束标签时的调用,调用与所述容器标签对应的布局管理器生成布局结束代码;所述组件执行单元,具有获取布局管理器的接口,用于:根据所述Java服务页面引擎在执行组件标签时的调用,根据所述组件标签所在的容器标签获得与所述容器标签对应的布局管理器,调用所述布局管理器生成与所述组件标签关联的组件布局开始代码和组件布局结束代码。
[0016] 本发明实施例的技术方案中,使用两种不同类型的JSP标签:容器标签和组件标签,将布局逻辑从组件标签中剥离出来,通过组件标签所在的容器标签找到对应的布局管理器实现组件标签的布局;由于采用与容器标签关联的布局管理器负责布局代码的生成,使得开发人员无需直接编写布局代码,开发简单;并且,组件标签自身与布局逻辑无关,可通过不同的容器标签实现不同的布局需求,使用灵活而不易出错。

附图说明

[0017] 图1是本发明实施例的页面控件布局方法主要步骤示意图;
[0018] 图2是本发明实施例的装置的基本逻辑结构示意图;
[0019] 图3是本发明实施例一页面控件布局方法的流程示意图;
[0020] 图4是与本发明实施例一方法对应的装置的逻辑结构示意图;
[0021] 图5是本发明实施例二页面控件布局方法的流程示意图;
[0022] 图6是与本发明实施例二方法对应的装置的逻辑结构示意图;
[0023] 图7是本发明实施例三页面控件布局方法的流程示意图;
[0024] 图8是与本发明实施例三方法对应的装置的逻辑结构示意图。

具体实施方式

[0025] 本发明实施例提供页面控件布局方法以及相应的装置。参考图1,本发明实施例的页面控件布局方法主要包括如下步骤:
[0026] A1、执行容器标签的容器开始标签,包括,调用与该容器标签对应的布局管理器生成布局开始代码。
[0027] 本发明实施例中使用两种不同类型的JSP标签:容器标签和组件标签。由于容器标签中需要放置组件标签,因此,容器标签采用包括容器开始标签和容器结束标签的结构。各个容器标签与相应的布局管理器关联,由布局管理器负责提供容器标签以及容器标签中的组件标签的布局逻辑。
[0028] A2、执行容器标签中的组件标签,包括,根据该组件标签所在的容器标签获得与该容器标签对应的布局管理器,调用该布局管理器生成与组件标签关联的组件布局开始代码和组件布局结束代码。
[0029] 组件标签可以采用包括组件开始标签和组件结束标签的结构,也可以采用开始和结束标签合并在一起的结构。容器标签中可以有一个或一个以上的组件标签,若有多个组件标签,则在本步骤中分别执行各个组件标签,生成各自关联的组件布局开始代码和组件布局结束代码即可。
[0030] 组件标签中可以包括一个或一个以上的组件,这些组件彼此之间可以有类型上的区别,也可以是类型一致的。在生成组件布局开始代码和组件布局结束代码时,需要分别对组件标签中的各个组件生成组件布局开始代码和组件布局结束代码。
[0031] 进一步的,组件标签通常需要提供一定的内容,因此执行容器标签中的组件标签还可包括,在生成组件布局开始代码和组件布局结束代码的步骤之间,生成组件内容代码;当然,在有多个组件的情况下,分别生成的各个组件内容代码应当在相应组件的组件布局开始代码和组件布局结束代码之间。所称组件内容代码可以由组件内容开始代码和组件内容结束代码组成;也可以是单一对象的组件内容代码,例如文本,这种情况可视为将该单一对象的组件内容代码包含在组件内容开始代码或组件内容结束代码中,若包含在开始代码中,则结束代码可以为空,若包含在结束代码中,则开始代码可以为空。
[0032] A3、执行容器标签的容器结束标签,包括,调用与该容器标签对应的布局管理器,生成布局结束代码。
[0033] 当然,容器标签也可具有自身的内容,与组件内容类似,可以由容器内容开始代码和容器内容结束代码组成;也可以是单一对象的容器内容代码。因此,可以在执行容器开始标签的过程中,在生成布局开始代码后,生成单一对象的容器内容代码;或者,可以在执行容器结束标签的过程中,生成单一对象的容器内容代码,然后再执行调用布局管理器的操作;或者,也可以在执行容器开始标签的过程中,在生成布局开始代码后,生成容器内容开始代码,随后在执行容器结束标签的过程中,生成容器内容结束代码,然后再执行调用布局管理器的操作。其中,生成单一对象的容器内容代码的情况,也可以视为分别执行了生成容器内容开始和结束代码的步骤,只是其中一个执行步骤的结果为空。
[0034] 另外,若一个组件标签不在一个容器标签中,或者一个组件标签处于另外一个组件标签中,则在执行组件标签时,获得相应的布局管理器将会返回空值,这种情况下不会执行该组件标签布局代码的生成操作。
[0035] 下面根据上述页面控件布局方法,从代码设计的角度对所涉及的软件对象进行说明:
[0036] 容器标签主要用于关联布局管理器,由于需要调用布局管理器来实现布局,因此容器标签提供获取布局管理器的代码接口。当然,为实现对布局管理器的灵活配置,容器标签也可进一步提供设置布局管理器的代码接口,这样即可通过执行容器标签来修改和设置布局管理器的布局逻辑。进一步的,若容器标签具有自身的内容,则容器标签还可提供生成容器内容开始代码的代码接口和生成容器内容结束代码的代码接口,若容器内容为单一对象的容器内容代码,则其中一个生成内容的代码接口所提供的代码片段可以为空。
[0037] 布局管理器负责容器标签以及容器标签中的组件标签的布局逻辑,因此提供四个接口,分别为生成布局开始和结束代码的代码接口,以及生成组件布局开始和结束代码的代码接口。
[0038] 组件标签与布局逻辑无关,因此提供生成组件内容开始代码和组件内容结束代码的代码接口即可,若组件内容为单一对象的组件内容代码,则其中一个代码接口所提供的代码片段可以为空。
[0039] 参考图2,对应于上述页面控件布局方法,本发明实施例的用于通过JSP标签生成HTML代码的装置主要包括JSP引擎101、容器执行单元102和组件执行单元103。
[0040] JSP引擎101,用于执行JSP文件,在执行到容器标签时调用容器执行单元102进行执行,在执行到组件标签时,调用组件执行单元103进行执行。
[0041] 容器执行单元102,具有获取布局管理器的接口,用于:根据JSP引擎101在执行容器标签的容器开始标签时的调用,调用与该容器标签对应的布局管理器生成布局开始代码;根据JSP引擎101在执行容器标签的容器结束标签时的调用,调用与该容器标签对应的布局管理器生成布局结束代码。
[0042] 组件执行单元103,具有获取布局管理器的接口,用于:根据JSP引擎101在执行组件标签时的调用,根据该组件标签所在的容器标签获得与该容器标签对应的布局管理器,调用该布局管理器生成与所执行组件标签关联的组件布局开始代码和组件布局结束代码。
[0043] 进一步的,容器执行单元102还可具有设置布局管理器的接口;使得容器执行单元102还可用于,根据JSP引擎101在执行容器标签时的调用,对与该容器标签对应的布局管理器进行设置。
[0044] 本发明实施例的上述基本方案中,使用两种不同类型的JSP标签:容器标签和组件标签,将布局逻辑从组件标签中剥离出来,组件标签的布局由该组件标签所在的容器标签对应的布局管理器负责,开发人员无需直接编写布局代码,开发简单;并且,组件标签自身与布局逻辑无关,可通过放置在不同的容器标签中实现不同的布局需求,使用灵活;而且标签自身不需要生成与布局相关的HTML代码,因此不会造成标签执行后的布局冲突,保证了布局逻辑的正确性。
[0045] 下面通过具体实施例对本发明的方法和装置作进一步的详细说明。
[0046] 实施例一、一种页面控件布局方法,参考图3(图3中,标号相同的一对方向相反的箭头表示对应的调用与返回,此外,由于容器执行单元/组件执行单元所执行的实际内容由被执行的容器标签/组件标签提供,因此图3中将容器标签/组件标签作为主体,后续流程图中的表示与此相同,不再赘述),包括如下步骤:
[0047] a1、JSP引擎调用容器执行单元执行容器标签的容器开始标签。
[0048] a2、容器执行单元执行容器开始标签,调用与该容器标签对应的布局管理器生成布局开始代码。
[0049] a3、JSP引擎调用组件执行单元执行容器标签中的组件标签的组件开始标签。
[0050] a4、组件执行单元执行组件开始标签,根据该组件标签所在的容器标签获得与该容器标签对应的布局管理器。
[0051] a5、组件执行单元调用获得的布局管理器生成组件布局开始代码。
[0052] a6、通常组件标签需要提供一定的内容,因此组件执行单元在执行组件开始标签时,除了生成组件布局开始代码,还进一步生成组件内容开始代码;此代码片段可以为空。
[0053] a7、JSP引擎调用组件执行单元执行容器标签中的组件标签的组件结束标签。
[0054] a8、组件执行单元执行组件结束标签,通常,可生成组件内容结束代码;此代码片段可以为空。
[0055] a9、组件执行单元在生成组件内容结束代码后,根据所执行组件标签所在的容器标签获得与该容器标签对应的布局管理器。
[0056] a10、组件执行单元调用获得的布局管理器生成组件布局结束代码。
[0057] a11、JSP引擎调用容器执行单元执行容器标签的容器结束标签。
[0058] a12、容器执行单元执行容器结束标签,调用与该容器标签对应的布局管理器生成布局结束代码。
[0059] 在上述执行过程中,若容器标签内部包括多个组件标签,则对各个组件标签重复a3~a10的步骤即可。
[0060] 参考图4,对应于实施例一的页面控件布局方法,本发明实施例的用于通过JSP标签生成HTML代码的装置中的组件执行单元203具体可采用如下结构,包括:
[0061] 第一开始单元2031,用于根据JSP引擎201在执行组件标签的组件开始标签时的调用,根据该组件标签所在的容器标签获得与该容器标签对应的布局管理器,调用获得的布局管理器生成组件布局开始代码。
[0062] 第一结束单元2032,用于根据JSP引擎201在执行组件标签的组件结束标签时的调用,根据该组件标签所在的容器标签获得与该容器标签对应的布局管理器,调用获得的布局管理器生成组件布局结束代码。
[0063] 图4中JSP引擎201和容器执行单元202可采用前述JSP引擎101和容器执行单元102的逻辑结构。
[0064] 为更好的理解本发明实施例一,下面举例进行说明。一段JSP文件中JSP标签使用的样例如下,包括容器标签grid、组件标签A、组件标签B:
[0065]
[0066] JSP引擎执行上述一段JSP文件,在解析到容器标签grid的容器开始标签时,容器执行单元生成布局开始代码(通过调用相应的布局管理器生成,简洁起见,以下皆省略该调用描述,不再重复说明):
[0067]
[0068] JSP引擎在解析到组件标签A时(开始和结束标签合并在一起),组件执行单元获取到其所在的容器“grid”,从而找到相关的布局管理器,生成组件布局开始代码:
[0069]
[0074] JSP引擎在解析到组件标签B的组件开始标签时,组件执行单元获取到其所在的容器“grid”,生成组件布局开始代码以及组件标签B的组件内容开始代码:
[0075]
[0078] 最后,JSP引擎在解析到容器标签grid的容器结束标签时,容器执行单元生成布局结束代码:
[0079]
[0070] 然后执行组件标签A生成组件标签A自身内容的开始代码和结束代码:
[0071]
[0072] 然后组件执行单元通过布局管理器生成组件布局结束代码:
[0073]
[0076] JSP引擎在解析到组件标签B的组件结束标签时,组件执行单元获取到其所在的容器“grid”,生成组件标签B的组件内容结束代码以及组件布局结束代码:
[0077]
[0080] 总的HTML代码的输出为:
[0081]
[0082] 对应的布局效果为,在浏览器中显示为上下两行,组件A在上面一行显示,组件B在下面一行显示。显然,组件标签B的组件内容代码也可以象组件标签A一样一次性输出,例如在开始代码中输出,则结束代码输出为空。
[0083] 实施例二、一种页面控件布局方法,与实施例一的区别在于,组件标签中具有不同类型的组件,每个组件需要有自己的组件布局开始代码和组件布局结束代码。参考图5,包括如下步骤:
[0084] b1、JSP引擎调用容器执行单元执行容器标签的容器开始标签。
[0085] b2、容器执行单元执行容器开始标签,调用与该容器标签对应的布局管理器生成布局开始代码。
[0086] b3、JSP引擎调用组件执行单元执行容器标签中的组件标签的组件开始标签。
[0087] b4、组件执行单元执行组件开始标签,根据该组件标签所在的容器标签获得与该容器标签对应的布局管理器。
[0088] b5、组件执行单元获取所执行组件标签中的前组件。
[0089] 当一个组件标签需要负责生成多个组件的内容时,可以包含多个组件,本实施例中按照组件的作用区分为三种类型:前组件、主组件、后组件。主组件通常指该组件标签主要的输出内容,一般是一个,如果组件标签中具有其他嵌套的内容,则将作为主组件的嵌套内容,主组件可以使用也可以不使用这些嵌套内容。前组件指需要输出在主组件前面的组件,前组件可以有多个。后组件指需要输出在主组件后面的组件,后组件也可以有多个。
[0090] 举例说明如下,对于表单域的“输入框”组件标签,可以定义“标题”、“输入框”、“说明”三个组件,其中“输入框”组件就是主组件,“标题”为前组件,“说明”为后组件。
[0091] b6、组件执行单元调用获得的布局管理器生成前组件布局开始代码。
[0092] b7、通常前组件需要提供一定的内容,因此还进一步生成前组件内容开始代码;此代码片段可以为空。
[0093] b8、生成前组件内容结束代码;此代码片段可以为空。
[0094] b9、组件执行单元调用获得的布局管理器生成前组件布局结束代码。
[0095] 若步骤b5中获取的前组件有多个,则对各个前组件重复b6~b9的步骤,获得全部前组件的布局代码和内容代码。
[0096] b10、组件执行单元调用获得的布局管理器生成主组件布局开始代码;
[0097] b11、通常主组件需要提供一定的内容,因此还进一步生成主组件内容开始代码;此代码片段可以为空。
[0098] b12、JSP引擎调用组件执行单元执行容器标签中的组件标签的组件结束标签。
[0099] b13、组件执行单元执行组件结束标签,通常,可生成主组件内容结束代码;此代码片段可以为空。
[0100] b14、组件执行单元在生成主组件内容结束代码后,根据所执行组件标签所在的容器标签获得与该容器标签对应的布局管理器。
[0101] b15、组件执行单元调用获得的布局管理器生成主组件布局结束代码。
[0102] b16、组件执行单元获取所执行组件标签中的后组件。
[0103] b17、组件执行单元调用获得的布局管理器生成后组件布局开始代码。
[0104] b18、通常后组件需要提供一定的内容,因此还进一步生成后组件内容开始代码;此代码片段可以为空。
[0105] b19、生成后组件内容结束代码;此代码片段可以为空。
[0106] b20、组件执行单元调用获得的布局管理器生成后组件布局结束代码。
[0107] 若步骤b16中获取的后组件有多个,则对各个后组件重复b17~b20的步骤,获得全部后组件的布局代码和内容代码。
[0108] 参考图6,对应于实施例二的页面控件布局方法,本发明实施例的用于通过JSP标签生成HTML代码的装置中的组件执行单元303具体可采用如下结构,包括:
[0109] 第二开始单元3031,用于根据JSP引擎301在执行组件标签的组件开始标签时的调用,根据该组件标签所在的容器标签获得与该容器标签对应的布局管理器;获取该组件标签中的前组件,调用获得的布局管理器生成前组件布局开始代码和前组件布局结束代码;调用获得的布局管理器生成主组件布局开始代码。
[0110] 第二结束单元3032,用于根据JSP引擎301在执行组件标签的组件结束标签时的调用,根据该组件标签所在的容器标签获得与该容器标签对应的布局管理器,调用获得的布局管理器生成主组件布局结束代码;获取该组件标签中的后组件,调用获得的布局管理器生成后组件布局开始代码和后组件布局结束代码。
[0111] 图6中JSP引擎301和容器执行单元302可采用前述JSP引擎101和容器执行单元102的逻辑结构。
[0112] 本实施例中提供了通过组件标签控制多个不同类型的组件布局的方法。
[0113] 为更好的理解本发明实施例二,下面举例进行说明。一段JSP文件中JSP标签使用的样例如下,包括容器标签grid、组件标签A,组件标签A将自身分解为三个组件:一个前组件“label”、一个主组件、一个后组件“description”:
[0114]
[0115] JSP引擎执行上述一段JSP文件,在解析到容器标签grid的容器开始标签时,容器执行单元生成布局开始代码:
[0116]
[0117] JSP引擎在解析到组件标签A时(开始和结束标签合并在一起),组件执行单元获取到其所在的容器“grid”,从而找到相关的布局管理器,生成前组件布局开始代码:
[0118]
[0123] 同理,组件执行单元生成主组件的布局开始代码和内容代码以及主组件的的布局结束代码:
[0124]
[0125] 然后,生成后组件“description”的布局开始代码、内容开始和结束代码(后组件“description”用来生成描述内容,该内容是一个单一对象)、布局结束代码:
[0126]
[0127] 最后,JSP引擎在解析到容器标签grid的容器结束标签时,容器执行单元生成布局结束代码:
[0128]
[0119] 然后,生成前组件“label”的内容开始和结束代码(前组件“label”用来生成标题内容,该内容是一个单一对象):
[0120] 组件A的标题
[0121] 然后组件执行单元通过布局管理器生成前组件布局结束代码:
[0122]
组件A的描述
[0129] 总的HTML代码的输出为:
[0130]
组 件 A 的 标 题 组件A的描述
[0131] 对应的布局效果为,在浏览器中显示一行,左边显示标题,中间显示主组件内容,右边显示描述内容。
[0132] 实施例三、一种页面控件布局方法,与实施例一的区别在于,组件标签中具有相同类型的组件,每个组件需要有自己的组件布局开始代码和组件布局结束代码。参考图7,包括如下步骤:
[0133] c1、JSP引擎调用容器执行单元执行容器标签的容器开始标签。
[0134] c2、容器执行单元执行容器开始标签,调用与该容器标签对应的布局管理器生成布局开始代码。
[0135] c3、JSP引擎调用组件执行单元执行容器标签中的组件标签的组件开始标签,该执行过程返回的代码可以为空。
[0136] c4、JSP引擎调用组件执行单元执行容器标签中的组件标签的组件结束标签。
[0137] c5、组件执行单元执行组件结束标签,根据所执行组件标签所在的容器标签获得与该容器标签对应的布局管理器。
[0138] c6、组件执行单元获取所执行组件标签中的各个组件。
[0139] 当一个组件标签需要负责生成多个组件的内容时,可以包含多个组件,本实施例中不区分组件标签中组件的类型,对所包含的组件进行一致的操作。
[0140] c7、组件执行单元调用获得的布局管理器生成组件布局开始代码。
[0141] c8、通常组件需要提供一定的内容,因此还进一步生成组件内容开始代码;此代码片段可以为空。
[0142] c9、生成组件内容结束代码;此代码片段可以为空。
[0143] c10、组件执行单元调用获得的布局管理器生成组件布局结束代码。
[0144] 若步骤c6中获取的组件有多个,则对各个组件重复c7~c10的步骤,获得全部组件的布局代码和内容代码。
[0145] c11、JSP引擎调用容器执行单元执行容器标签的容器结束标签。
[0146] c12、容器执行单元执行容器结束标签,调用与该容器标签对应的布局管理器生成布局结束代码。
[0147] 上述步骤中,步骤c5~c10也可以在执行组件开始标签的过程中进行,这种情况下,JSP引擎调用组件执行单元执行容器标签中的组件标签的组件结束标签时,返回的代码可以为空。
[0148] 参考图8,对应于实施例三的页面控件布局方法,本发明实施例的用于通过JSP标签生成HTML代码的装置中的组件执行单元403具体可采用如下结构,包括:
[0149] 第二开始单元4031,用于根据JSP引擎401在执行组件标签的组件开始标签时的调用,执行该组件开始标签。
[0150] 第二结束单元4032,用于根据JSP引擎401在执行组件标签的组件结束标签时的调用,根据该组件标签所在的容器标签获得与该容器标签对应的布局管理器;获取该组件标签中的各个组件;调用获得的布局管理器分别生成各个组件的组件布局开始代码和组件布局结束代码。
[0151] 图8中JSP引擎401和容器执行单元402可采用前述JSP引擎101和容器执行单元102的逻辑结构。
[0152] 本实施例中提供了通过组件标签控制多个相同类型的组件布局的方法。
[0153] 为更好的理解本发明实施例三,下面举例进行说明。一段JSP文件中JSP标签使用的样例如下,包括容器标签grid、组件标签A,组件标签A将自身分解为三个组件:“content1”、“content2”、“content3”:
[0154] [0155] JSP引擎执行上述一段JSP文件,在解析到容器标签grid的容器开始标签时,容器执行单元生成布局开始代码:
[0156]
[0157] JSP引擎在解析到组件标签A时(开始和结束标签合并在一起),组件执行单元获取到其包含的三个组件,并获取到其所在的容器“grid”,从而找到相关的布局管理器,依次对各个组件执行如下操作:
[0158] 生成组件“contentX”(X表示1,2,3)的组件布局开始代码:
[0159]
,或
[0164] 循环执行完所有组件后,结束对组件标签A的处理。
[0165] 最后,JSP引擎在解析到容器标签grid的容器结束标签时,容器执行单元生成布局结束代码:
[0166]
,或
[0160] 然后,生成“contentX”的内容开始和结束代码(该内容是一个单一对象):
[0161] contentX
[0162] 然后,生成组件“contentX”(X表示1,2,3)的组件布局结束代码:
[0163]
[0167] 总的HTML代码的输出为:
[0168]
content1content2content3
[0169] 对应的布局效果为,在浏览器中显示一行三列,第一列显示content1,第二列显示content2,第三列显示content3。
[0170] 本发明实施例的技术方案中,使用两种不同类型的JSP标签:容器标签和组件标签,将布局逻辑从组件标签中剥离出来,通过组件标签所在的容器标签找到对应的布局管理器实现组件标签的布局;由于采用与容器标签关联的布局管理器负责布局代码的生成,使得开发人员无需直接编写布局代码,简化了组件标签的开发和维护;并且,组件标签自身与布局逻辑无关,可通过不同的容器标签实现不同的布局需求,可扩展性强且使用灵活而不易出错。进一步提供了通过组件标签控制多个相同或不同类型的组件布局的方法,能够支持更灵活的应用方式。
[0171] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
[0172] 以上对本发明实施例所提供的页面控件布局方法和相应的装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。