专利名称:用于生成动态网页的方法及装置的利记博彩app
技术领域:
本发明涉及信息处理技术,更具体地说,涉及生成动态网页的技术。
技术背景在任何基于浏览器的架构中,不管后台服务器端采用什么样的展现技术和架构设计,其最终返回给浏览器的必须是浏览器能识别的标记: 吾言, 包括超文本标记语言HTML (Hyper Text Markup Language),可扩展 标记语言XML (extensible Markup Language),无线标记语言WML (Wireless Markup Language)等。在动态网页的制作过程中,通常首先由网页设计人员(例如美工人员) 利用进行模板设计;然后,由开发人员对才莫板进行填充,以实现各种动态 功能(比如动态数据展现)。设计模板例如HTML设计模板;通常网页设 计人员(例如美工人员)只具备网页设计相关的技能(比如懂得HTML语 言),而不知晓任何非网页设计相关的技能(比如java);而知晓非网页设 计相关的技能的开发人员在动态网页的开发过程中,负责后台程序编码, 动态数据的生成而不负责网页风格的控制,开发人员可以利用例如Perl、 Tcl、 Java、 Python、 ASP以及许多其它语言和工具,对才莫板进行填充以实 现动态数据的生成。对于网页的动态数据展现,存在许多流行的方法,例如Servlet+JSP 方法(JavaServer Page)(或者配合标记库Taglibs) 、 Velocity方法、可 扩展标i己语言编译器XMLC ( extensible Markup Language Complier)方 法等。但是目前存在的方法,都必然要求网页设计人员和开发人员对同一 个模板文件进行协同开发,比如由网页设计人员先完成模板文件(基于标
准浏览器能识别的标记语言,比如HTML或者WML等等);然后由开 发人员修改这个文件,填入只有开发人员能明白的程序代码,这样就必然 破坏了原M板文件的标准性,使得被修改后的模板不能被标准浏览器所 识别,这对网页设计人员的后继维护带来了巨大的挑战,由于该模板里面 加入了大量的网页设计人员不可识别的程序语言,造成网页设计人员不能 再用原来的网页编辑器进行维护。下面将以现有的部分典型技术为例,侮: 进一步的说明。Servlet是在网页服务器或应用服务器上运行的一种Java应用程序, 用来提供服务器端处理,例如访问数据库等。Servlet将展现标记内容和业 务逻辑处理紧密结合在一起。下面为Servlet的实例的一个片段response.setBufferSize (8*1024); response.setContentSize ("text/html"); Print Writer out = response.get Writer (); out.println ("<HTML>,,);out.println ("<HEAD> <TITLE> Serlet Output</TITLE> </HEAD>,,); out.println ("<BODY>");out.println ("
Welcome To this World </P>,,); out.println ("</BODY>"); println ("</HTML>,,);通常使用servlet技术的开发流程是这样的由网页设计人员编写标准 的模板文件(如HTML文件),然后由开发人员将全部的模板写入servlet 代码,在这些代码中间嵌入标准的java逻辑代码以显示动态数据。然而, Servlet技术的缺点是明显的,它很难将展现标记内容和业务逻辑处理分 开,使用该技术对于进一步的维护是致命的,因为任何显示相关的数据修 改(比如修改一个字体的颜色或者布局),是直接修改java代码,所以需 要对整个servlet代码进行重新编译和部署。JSP是对Servlet技术的扩展,其允许在同 一页中结合HTML和Java, 例如将Java插入标记页用于产生动态内容,其中Java提供业务逻辑处理, HTML提供在网页浏览器中展现的页面。JSP文件访问Bean或其它能将生成的动态内容发送到浏览器的组件。 当网页服务器接收到一个JSP文件请求时,服务器将请求发送至应用服务 器(例如IBM WebSphere)。应用服务器对JSP文件进行语法分析并生 成Java源文件(被编译和执行为Servlet) 。 Java源文件的生成和编译仅 在初次调用Servlet时发生,除非已经更新了原始的JSP文件。在这种情 况下,应用服务器将检测所做的更新,并在执行它之前重新生成和编译 Servlet。下面为JSP的实例的一个片段<% @ page import = "java.util.Date, java.text.DateFormat" %><HTMD> <BODY>
Welcome to JSP development where the time is: <% = DateFormat.getTimelnstance () .format((new Data())) 0/o> </BODY> </HTML>尽管JSP不需要在编程时编写展现标记,但是对于网页设计人员和开 发人员,他们必须能够处理/理解嵌入页中的Java程序和业务逻辑,而这 对于网页设计人员来说是很困难的,因为网页设计人员只能认识标准的 HTML,而不能认识嵌入在HTML中间的任何Java程序。如果此时要求 网页设计人员进行后期的页面风格修改,将导致巨大的困难。 一方面是此 时的模板文件中加入了大量的非HTML标准标示的代码,另一方面页面编 辑工具此时将不可用。Velocity是基于Java的模板引擎,它允许任何人使用简单而强大的模 板语言来引用定义在Java代码中的对象。网页设计人员可以与Java程序 员根据模型/视图/控制器(Model/View/Controller, MVC )架构并4亍开发 网页,也就是说,网页设计人员只集中于设计网页,而程序员只集中于编
写代码。下面为Velocity的实例的一个片段<HTMI> <BODY>Hello $customer.Name!<TABLE>#foreach($mud in $mudsOnSpecial) #if($customer.hasPurchased($mud))<TR〉 <TD>$flogger.getPromo($mud)</TD> </TR〉 #end #end</TABLE></BODY></HTML>然而,实际上,Velocity模板语言非常类似于JSP中的Java程序,一 方面对于网页设计人员,在模板文件中嵌入了很多他们不能理解的业务逻 辑或其它语言。此外,Velocity模板中要求使用它自定义的VTL (Velocity Template Language, Velocity模板语言),VTL和JSP中的Java代码本 质上并没有什么区别。另一方面加入VTL之后,这个模板已经不是纯 HTML 了,其同样也要求页面开发人员具有一定的前端编程技能。加入 VTL之后的才莫板,已经不能被标准HTML编辑器所识别。此外,Velocity 的合并引擎(Merge Engine)是以模板为中心,即先读入模板,然后编译 模板文件,同时解释模板中嵌入的VTL,由VTL去访问数据上下文(Data Context),从而进行动态数据替换。Velocity的上下文只是一个数据存储
中心,只具有数据,而不具有任何展现相关的信息(由模板中的VTL去解 释该数据如何展现)。比如页面要显示10条记录,而业务逻辑返回的数据 有20条,Velocity的上下文会;^V这20条数据,然后由模板中的VTL去 循环显示1-10条,即由模板来控制显示。这些都对开发人员提出了更高的 要求。XMLC方法是对标记语言页面,如HTML, XML, WML等进行编 译以生成一个相应的Java类。这个Java类包含了页面的完整的文档对象 模型DOM ( Document Object Model)树结构及其操作方法,因而可以处 理页面上的任何内容及其属性。更重要的是,在XMLC中,巧妙地把动态 内容和HTML中的标识id (identifier )属性联系起来并在Java类中生成 相应的操作方法,比如改变文本内容的属性等。不同于JSP, XMLC没有 引进任何额外的HTML/XML标记属性,只是重用了 id属性。因而,XMLC 实际上可以处理4壬4可的标记语言,不仅仅限于XML, HTML, WML等。XMLC通过3个步骤处理标记语言页面,其工作过程为1. 校验输入文档(HTML, XML, WML等)是否有效,标记是否 合法完整。2. 产生一个DOM树,即Java类代表输入文档(页面)。在实际应 用中,创建一个这个类的实例,使用这个类的实例就可以操纵页面的DOM 树。3. 产生处理动态内容的Java方法。动态内容只需要用id标记出来即 可。可以看出,这种方法极大的简化Java开发人员处理页面动态内容的工 作量。虽然,XMLC使用标准的HTML做为模板,并且使用HTML的id 属性做为关鍵字定位。但是,XMLC要求在开发阶段就用它的编译工具进 行预编译,把模板文件编译成一堆的Java类。每个Java类封装了才莫板中 对应结点的属性和操作方法,然后由程序员在业务逻辑中导入这些类,并 且通过应用编禾呈接口 API (Application programming interface)的方式对 这些结点进行赋值,最终运行Java程序输出HTML内容,XMLC并没有
合并引擎的概念,同时模板文件只是在开发期间有效,运行期间只是使用编译出来的Java类。与Servlet、 JSP和Velocity相比,XMLC对于网页设计人员来说非常 简单,它基于纯HTML模板,但是对于业务开发人员来说非常复杂,因为 只要网页(或模板)有所改变,开发人员必须重新将HTML模板编译成 DOM树,并修复编译错误(例如〈TR、.〈TR〉应该是〈TR、.々TR〉)。因此,需要一种基于可以被浏览器浏览(解释)的模板生成动态网页 的技术,使其对于网页设计人员和开发人员都非常简单,并且使他们之间 的联系变得简单,从而使任何一方可以容易地阅读并理解另一方进行的修 改。发明内容为了解决上述现有技术中存在的问题,本发明提供了用于生成动态网 页的方法以及用于生成动态网页的装置。根据本发明的一个方面,提供了一种用于生成动态网页的方法,包括 以下步骤根据响应浏览器的请求获得的业务逻辑的结果,生成结构化的数据上下文,该数据上下文包括至少一个用于上述动态网页的动态数据项;加栽与上述请求相关联的模板,该模板可以被浏览器浏览并包含与上述数据上下文中的至少一个动态数据项相对应的关联信息;以及将上述数据上下文中的至少 一个动态数据项合并到上述模板中得到动态网页。根据本发明的另一个方面,提供了一种用于生成动态网页的装置,包括以下步骤业务逻辑处理单元,根据响应浏览器的请求获得的业务逻辑 处理的结果,生成结构化的数据上下文,该数据上下文包括至少一个用于 上述动态网页的动态数据项;模板加栽单元,用于加载与上述请求相关联的模板,该模板可以被浏览器浏览并包含与上述数据上下文中的至少一个动态数据项相对应的关联信息;以及合并单元,将上述数据上下文中的至 少 一个动态数据项合并到上述模板中得到动态网页。
相信通过以下结合附图对本发明具体实施方式
的说明,能够使人们更 好地了解本发明的上述和其它特点、优点和目的。图1是根据本发明的一个实施例的用于生成动态网页的方法的流程图;图2是根据本发明的实施例的数据上下文与纯HTML模板之间对应关 系的示意图;以及图3是才艮据本发明的另一个实施例的用于生成动态网页的装置的方框图。
具体实施方式
下面就结合附图对本发明的各个实施例进行详细的说明。 用于生成动态网页的方法图1是才艮据本发明的一个实施例的用于生成动态网页的方法的流程图。在图1中,首先,在步骤101,根据来自浏览器的请求获得业务逻辑 处理的结果,将该业务逻辑处理结果生成结构化的数据上下文,该数据上 下文包括用于动态网页的 一个或多个动态数据项。具体地,来自浏览器的请求包括本领域的技术人员公知的任何Web 请求,例如用户在网上银行上查询余额的请求、用户登陆某个帐户时进行 身份认证的请求、基于某个关键字进行搜索的请求等等,本发明对此没有 任何限制。并且,本发明只关注业务逻辑处理结果如何向浏览器展现,而 根据来自浏览器的请求如何获得业务逻辑处理的结果可以采用现有4支术中 的任何方法。在步骤101中的术语"业务逻辑,,更多的是一种语义上的术语,而非 技术上。只要是跟业务处理有关的任何代码都可以叫做业务逻辑。对于任 何系统,其目的都在于接受用户的输入参数==> 根据输入参数进行业 务(交易)==> 返回显示结果。不管什么系统,都基于这个基本的流程。
这里根据输入^t进行的业务(交易),就是所谓的"业务逻辑"。下面通过两个实例详细地描述在步骤101中进行的业务逻辑处理。 实例l:关于查询余额的请求首先,用户通过用户界面(UI)(或者是根员系统的基于胖客户端的 系统;或者是普通银行客户使用网上银行的浏览器页面),输入自己的帐 号,然后按提交按钮。接着,将这个查询余额的请求发送到后台服务器上,由后台某个应用 接受这个请求。接着,应用会从请求中提取参数(这里是指用户输入的帐号),然 后交给一个或者多个子程序去处理,以获得该帐号对应的余额。这里的"一 个或者多个子程序,,就是所谓的业务逻辑。业务逻辑的实现方式有多种, 完全依靠用户自己的设计和代码实现。例如,这里可以是一个普通的类, 去直接查询数据库,然后得到一个余额信息。或者,通过EJB ( Ente卬rise JavaBeans,企业JavaBeans )交给一个远程的应用进行处理,此时这个帐 号参数就相当于远程应用的一个输入,然后由那个远程应用去处理参数, 以获得余额信息。或者,基于SO A ( Service-Oriented Architecture,面向 服务构架)架构,这个帐号参数可能会交给一个企业服务总线(ESB)的 纟且件,然后进入一个流禾呈,通过JCA (Java Connector Architecture, Java 连接器架构)的连接器去访问主机。不管怎么设计这个过程(简单的或者 复杂的),其目的都是根据输入的帐号信息得到用户的余额。而这个过程, 都可以叫做业务逻辑。最后,通过业务逻辑处理之后,获得一个帐户余额,该帐户余额即是 业务逻辑处理结果,需要把这个帐户余额返回给用户界面,也就是请求响 应的动态网页。因此该处理结果中包括用于生成该请求响应动态网页的一 个或多个动态数据项,在步骤101中要将该业务逻辑处理结果生成结构化 的数据上下文。实例2:身杨4人证的请求首先,用户输入用户名和密码,然后提交请求。
接着,将请求发到后端服务器,相应的应用程序开始启动,从请求中 获得用户名和密码。接着,将获得的用户名和密码发送给相应的业务逻辑去认证该用户名和密码是否正确。这个业务逻辑可以是直接访问数据库进行用户名/密码 对比;交给远程应用服务,该远程应用服务可以是EJB,也可以是SOA, 或者轻量级目录访问协i义LDAP( Lightweight Directory Access Protocol,) 等,把用户名/密码做为远程应用的输入。接着,业务逻辑会返回一个输出,该输出即是在步骤101中获得的业 务逻辑处理结果,该业务逻辑处理结果也就是请求响应的动态网页。例如, 提示该用户名密码不正确,或者给出一个信号证明通过验证。此时业务逻 辑结束。因此该处理结果中包括用于生成该请求响应动态网页的一个或多 个动态数据项,在步骤101中要将该业务逻辑处理结果生成结构化的数据 上下文。这里的结构化可以理解为生成特定的数据结构,或者数据类等等, 以4更于后面处理。图2中的左面方框显示了一个在步骤101中生成的结构化的数据上下 文的实例,该数据上下文包括用于动态网页的一个或多个动态数据项。在 该数据上下文的实例中,Accountld、 Customerld和Balance是基本类型 数据,而AccountList是一个队列(ArrayList),该队列用于存储多个数 据结构,并且该队列中的每行是一个子数据上下文,即一个Accountlnfo 类,该Accountlnfo类用于存储寸壬何数据,例力n AccountNumber、 AccountType和AccountBalance的动态数据项。总而言之,应该理解业务逻辑是一个非常广义的说法,表示的是真正 的业务处理逻辑代码,与具体的技术和算法实现没有任何关系。并且我们 在该步骤只是获得业务逻辑的处理结果,至于业务逻辑如何处理并不在我 们的保护范围之内,此外,在步骤101中生成的结构化的数据上下文以及 在数据上下文中包含的动态数据项如何使用将在下面的步骤102中进行详 细描述。接着,在步骤102,加栽与在步骤101中的来自浏览器的请求相关联 的模板,该模板可以被浏览器浏览并包含与上述数据上下文中的一个或多 个动态数据项相对应的关联信息。模板是网页设计人员工作的结果。现有技术中 一般动态网站的开发过程是首先由网页开发人员开发静态网页(比如纯HTML),然后交给业 务开发人员。业务开发人员去修改这个静态网页,其中嵌入大量的业务逻 辑或者显示逻辑,使得这个网页可以显示动态数据,此时,这个被fl"改过 的网页就是所谓的"模板"。这些模板是存储在应用服务器端,由应用程 序负责读取和解释,根据不同的请求,将这些模板文件最终编译运行为标 准的浏览器能识别的标示(比如HTML)返回给客户请求,从而显示在客 户端。模板和请求的关联,由客户的应用程序来决定。 一种常用的实现是 将模板文件和请求直接关联,比如用户请求的统一资源定位符(URL, Uniform Resource Locator ) 是 http:〃www.sami)le.com/mvweb/ account,isp,则将直接调用名字为"accoimt.jsp"的才莫板文件。现有技术中的模板并不是由纯标记语言表示的模板,也就是说,它必 须编译运行后才能被浏览器浏览,而本发明使用由纯标记语言表示的模板, 由纯标记语言表示的模板是可以直接被浏览器(例如,网页设计人员使用 的浏览器)解释的标记语言表示的模板,例如IE浏览器可以解释HTML, WIN WAP浏览器可以解释WML,则纯HTML模板就是一种由纯标记语 言表示的模板,纯WML模板也是一种由纯标记语言表示的模板,本发明 生成模板的标记语言包括例如HTML, XML, WML等,以及本领域的技 术人员公知的及未来发展的任何其它标记语言,本发明对此并没有限制。 使用由纯标记语言表示的模板进行请求响应的浏览器展示时,网页设计人 员不需了解其不可识别的程序语言,也无需重新编译代码。此外,上述模板中包含的与上述数据上下文中的一个或多个动态数据 项相对应的关联信息被记录在上述模板中的标记的属性中,该属性例如可 以是HTML, XML, WML模板中的标识ID (Identifier)属性或者其它 属性,只要其能够将数据上下文中的动态数据项与模板中的动态内容关联 起来即可。
下面以由纯HTML的标记构成的纯HTML模板为例对本实施例进行 描述。纯HTML才莫板可以由通常的浏览器,例如IE浏览器浏览。该純 HTML模板事先由网页设计人员编写,存储在服务器中。下面为纯HTML的一个实例〈input type = "input" name = "userName" value = "my name" id = "userName">,里面包含的所有信息全部是标准的HTML语法,没有任何 的非HTML语法出现,所以将它称之为"纯HTML"。而下面的实例不是纯HTML:<input type = "input" name = "userName" value = "<%=formBean.getUserName()%>,,> , 请 注 意"<%=formBean.getUserName( )%>,,不是标准的HTML语法,是Java 逻辑代码,不能被浏览器直接识别,所以这个不能称之为"纯HTML"。 图2的右面方框是纯HTML模板的 一个实例,该纯HTML模板没有 任何非HTML标准的标示,能直接在IE浏览器中显示。在浏览器中显示 为如下两个表格Accountld123-456-789CustomerldX00192810281B由iicc2234332.00AccouiitNumbcrAccoimtTypeAccountBalance01010-202920-1929192Credit10000.00对于图2右面方框的纯HTML模型,将一个或多个标记的ID属性作 为与上述数据上下文中的一个或多个动态数据项相对应的关联信息,例如, 包括Accoimtld、 Customerld、 Balance和AccountList。其中AccountList 是一个队列,其中包含了多条记录,每条记录都是另一个子数据上下文 (Accountlnfo类),Accountlnfo类又包括ID属性AccoimtNumber、 AccoimtType和AccountBalance。这些ID属性对应的被标记的内容可以 被图2中的左边方框的数据上下文中的动态数据替换。图2正是显示了图
2中的左边方框的数据上下文和图2中的右边方框的模板之间的对应关系, 表明图2中的右边的模板是来自浏览器的请求相关联的模板。应该理解, 这里示出的纯HTML模型及其ID属性只是为了示例性说明,本发明可以 使用其它标记语言(例如XML或者WML等)及其它属性实现。应该注意,数据上下文的结构应该与显示逻辑相对应,以及生成的格 式化数据中的属性名称和层次位置必须与纯HTML模板中定义的各个ID 属性相对应。接着,在步骤103,通过将上述数据上下文中的一个或多个动态数据 项合并到上述模板中。具体地,将上述一个或多个动态数据项合并到上述^^板中的方法可以 是本领域的技术人员公知的任何方法,其包括但不限于如下步骤遍历上 述生成的数据上下文中的每一个数据项;以及如果在上述模板找到与该数 据项相对应的关联信息,则将上述数据项替换到上述模板中的相应位置。例如,对于上述纯HTML模板,遍历上迷生成的数据上下文中的每一 个动态数据项,如果在上述纯HTML模板中找到与该动态数据项相对应的 ID属性,则将上述动态数据项替换到上述纯HTML模板中的相应位置。 而且,当在上述纯HTML模板中没有与上述生成的数据上下文中的该动态 数据项相对应的ID属性时,才艮告该镣溪信息。此外,当遍历结束时在上 述纯HTML模板中还有ID属性的值没被相应的动态数据替换时,报告该 错误信息。上述的遍历方法和报错方法可以利用本领域的技术人员z^知的 任何方法,例如可以采用字符串查找匹配,将id属性出现的位置进行编码 或者将模板拆分为DOM结点等等方式,本发明对此并没有限制,在此不 再赘述。此外,本实施例的方法可以在步骤103之前,对上述模板进行语法检 查,以发现其中的任何编写错误,并且在步骤103之后,还可以对合并生 成的网页进行语法检查,以发现合并过程中产生的任何错误。上述的语法 检查方法可以利用本领域的技术人员公知的任何方法,比如标示匹配原则 校验,位置定位校验等等,本发明对此并没有限制,在此不再赘述。 通过以上的说明可知,本实施例的用于生成动态网页的方法使用由纯 标记语言表示的模板,并不需要附加的编译器对模板进行编译,从而简化 了生成动态网页的过程。通过使用纯标记语言表示的模板,可以釆用现有 的任何标记语言设计工具进行网页设计,从而对于网页设计人员来说不需 要任何其它技术要求。此外,网页的整个开发过程和动态功能的实现都是 基于标记语言,没有引入任何非标记语言的脚本或标签,从而使网页设计人员和开发人员之间的联系变得简单。此外,本实施例的方法不需要对模 板进行任何的预处理,只需要在运行时将其中的动态数据项进行相应的替换,从而是一种简单有效的网页生成方法。用于生成动态网页的装置在同一发明构思下,图3是根据本发明的另一个实施例的用于生成动 态网页的装置的方框图。下面就结合该图,对本实施例进行描述。对于那 些与前面实施例相同的部分,适当省略其说明。在图3中,用于生成动态网页的装置300包括:业务逻辑处理单元301, 根据来自浏览器的请求获得业务逻辑处理的结果,将该业务逻辑处理结果 生成结构化的数据上下文,该数据上下文包括至少一个用于上述动态网页 的动态数据项;模板加栽单元302,用于加栽与上述请求相关联的模板, 该模板可以被上述浏览器浏览并包含与上述数据上下文中的至少 一个动态 数据项相对应的关联信息;以及合并单元303,将上述数据上下文中的每 一个动态数据合并到上述模板中。具体地,业务逻辑处理单元301接收到的来自浏览器的请求包括本领 域的技术人员公知的任何Web请求,例如用户在网上银行上查询余额的请 求、用户登陆某个帐户时进行身伤H人证的请求、基于某个关键字进行搜索 的请求等等,本发明对此没有任何限制。业务逻辑处理单元301进行的"业务逻辑"更多的是一种语义上的术 语,而非技术上。只要是跟业务处理有关的任何代码都可以叫做业务逻辑。 对于任何系统,其目的都在于接受用户的输入参数==> 根据输入参数 进行业务(交易)==> 返回显示结果。不管什么系统,都基于这个基本 的流程。这里根据输入^t进行的业务(交易),就是所谓的"业务逻辑"。描述业务逻辑处理单元301进行的业务逻辑的例子可以参见用于生成 动态网页的方法中的实例,这里不再赘述。总而言之,应该理解业务逻辑是一个非常广义的说法,表示的是真正 的业务处理逻辑代码,与具体的技术和算法实现没有任何关系。此外,业 务逻辑处理单元301生成的数据上下文以及在数据上下文中包含的动态数 据将在下面进行详细描述。模板加载单元302加栽与在业务逻辑处理单元301接收到的来自浏览 器的请求相关联的模板,该模板可以被浏览器浏览并包含与上述数据上下 文中的一个或多个动态数据项相对应的关联信息。具体地,该模板加栽单元302加载的模板是由可以被浏览器(例如, 网页设计人员使用的浏览器)解释的标记语言表示的模板,标记语言包括 例如HTML, XML, WML等,以及本领域的技术人员公知的及未来发展 的任何其它标记语言,本发明对此并没有限制。此外,上述模板中包含的与上述数据上下文中的一个或多个动态数据 项相对应的关联信息被记录在上述才莫板中的标记的属性中,该属性例如可 以是HTML, XML, WML才莫板中的标识ID (Identifier)属性或者其它 属性,只要其能够将数据上下文中的动态数据项与模板中的动态内容关联 起来即可。由纯HTML的标记构成的纯HTML模板的实例可以参见用于生成动 态网页的方法的实例,这里不再赘述。合并单元303将业务逻辑处理单元301生成的上述数据上下文中的一 个或多个动态数据项合并到模^口载单元302加栽的上述模板中。具体地,将上述一个或多个动态数据项合并到上述才莫板中的合并单元 303可以是本领域的技术人员公知的任何单元,其包括但不限于遍历单 元,用于遍历上述生成的数据上下文中的每一个数据项;以及替换单元, 如果在上述模板找到与该数据项相对应的关联信息,则将上述数据项替换 到上述模板中的相应位置。
例如,对于上述纯HTML模板,上述遍历单元遍历上述生成的数据上 下文中的每一个动态数据项,以及如果在上述纯HTML模板中找到与该动 态数据项相对应的ID属性,上述替换单元将上述动态数据项替换到上述 纯HTML模板中的相应位置。而且,合并单元303还包括一报错单元,当 在上述纯HTML模板中没有与上述生成的数据上下文中的该动态数据项 相对应的ID属性时,该报错单元报告该错误信息。此外,当遍历结束时 在上述纯HTML模板中还有ID属性的值没被相应的动态数据替换时,该 报错单元报告该g信息。上述遍历单元、替换单元和报错单元可以是本 领域的技术人员公知的任何单元,例如可以采用字符串查找匹配单元,将 id属性出现的位置进行编码单元或者将模板拆分为DOM结点单元等等方 式,本发明对此并没有限制,在此不再赘述。此外,本实施例的用于生成动态网页的装置300还包括一语法检查单 元,其在合并单元303进行上述合并之前,对上述模板进行语法检查,以 发现其中的任何编写错误,并且在合并单元303进行上述合并之后,对上 述生成的动态网页进行语法检查,以发现合并过程中产生的任何错误。语 法检查单元可以是本领域的技术人员公知的任何单元,比如标示匹配原则 校验单元,位置定位校验单元等等,本发明对此并没有限制,在此不再赘 述。通过以上的说明可知,本实施例的用于生成动态网页的装置使用由纯 标记语言表示的模板,并不需要附加的编译器对模板进行编译,从而简化 了生成动态网页的过程。通过使用纯标记语言表示的模板,可以采用现有 的任何标记语言设计工具进行网页设计,从而对于网页设计人员来说不需 要任何其它技术要求。此外,网页的整个开发过程和动态功能的实现都是 基于标记语言,没有引入任何非标记语言的脚本或标签,从而使网页设计人员和开发人员之间的联系变的简单。此外,本实施例的装置不需要对模 板进行任何的预处理,只需要在运行时将其中的动态数据项进行相应的替 换,从而是一种简单有效的网页生成装置。以上虽然通过一些示例性的实施例详细地描述了本发明的用于生成动
态网页的方法以及用于生成动态网页的装置,但是以上这些实施例并不是 穷举的,本领域技术人员可以在本发明的精神和范围内实现各种变化和修改。因此,本发明并不限于这些实施例,本发明的范围仅由所附权利要求为准。
权利要求
1.一种用于生成动态网页的方法,包括以下步骤根据响应浏览器的请求获得的业务逻辑处理的结果,生成结构化的数据上下文,该数据上下文包括至少一个用于上述动态网页的动态数据项;加载与上述请求相关联的模板,该模板可以被浏览器浏览并包含与上述数据上下文中的至少一个动态数据项相对应的关联信息;以及将上述数据上下文中的至少一个动态数据项合并到上述模板中得到动态网页。
2. 根据权利要求l所述的用于生成动态网页的方法,其中,上述合 并步骤包括遍历上述生成的数据上下文中的每一个数据项; 如果在上述模板找到与该数据项相对应的关联信息,则将上述数据项 替换到上述才莫板中的相应位置。
3. 根据权利要求2所述的用于生成动态网页的方法,其中,上述合 并步骤还包括当在上述模板中没有与上述生成的数据上下文中的该数据项相对应的 关联信息时,报告该餘溪信息。
4. 根据权利要求2所述的用于生成动态网页的方法,其中,上述合 并步骤还包括当遍历结束时在上述模板中还有关联信息没被相应的动态数据项替换 时,报告该错误信息。
5. 根据权利要求l所述的用于生成动态网页的方法,还包括 在上述合并步骤之前,对上述模板进行语法检查。
6. 根据权利要求l所述的用于生成动态网页的方法,还包括 在上述合并步骤之后,对上述生成的动态网页进行语法检查。
7. 根据权利要求1-6中任何一项所述的用于生成动态网页的方法, 其中,上述模板是由标记语言表示的模板;上述模板中包含的与上述数据上下文中的至少一个动态数据项相对应 的关联信息被记录在上述模板中的标记的属性中。
8. 根据权利要求7所述的用于生成动态网页的方法,其中,上述模 板是由HTML、 XML或者WML表示的模板。
9. 根据权利要求8所述的用于生成动态网页的方法,其中,上述模 板中包含的与上述数据上下文中的至少一个动态数据项相对应的关联信息 被记录在上述模板中的标记的ID属性中。
10. —种用于生成动态网页的装置,包括以下步骤 业务逻辑处理单元,根据响应浏览器的请求获得的业务逻辑处理的结果,生成结构化的数据上下文,该数据上下文包括至少一个用于上述动态 网页的动态数据项;模板加载单元,用于加载与上述请求相关联的模板,该模板可以被浏 览器浏览并包含与上述数据上下文中的至少一个动态数据项相对应的关联 信息;以及合并单元,将上述数据上下文中的至少一个动态数据项合并到上述模 板中得到动态网页。
11. 根据权利要求10所述的用于生成动态网页的装置,其中,上述 合并单元包括遍历单元,用于遍历上述生成的数据上下文中的每一个数据项; 替换单元,如果在上述模板找到与该数据项相对应的关联信息,则将 上述数据项替换到上述模板中的相应位置。
12. 根据权利要求11所述的用于生成动态网页的装置,其中,上述 合并单元还包括报错单元,当在上述模板中没有与上述生成的数据上下文中的该数据 项相对应的关联信息时,报告该餘溪信息。
13. 根据权利要求11所述的用于生成动态网页的装置,其中,上述 合并单元还包括报错单元,当遍历结束时在上述模板中还有关联信息没被相应的动态数据项替换时,报告该错误信息。
14. 根据权利要求10所述的用于生成动态网页的装置,还包括 语法检查单元,在上述合并单元进行合并之前,对上述模板进行语法检查。
15. 根据权利要求10所述的用于生成动态网页的装置,还包括 语法检查单元,在上述合并单元进行合并之后,对上述生成的动态网页进行语法检查。
16. 根据权利要求10-15中任何一项所述的用于生成动态网页的装 置,其中,上述模板是由标记语言表示的模板;上述模板中包含的与上述数据上下文中的至少一个动态数据项相对应 的关联信息被记录在上述模板中的标记的属性中。
17. 根据权利要求16所述的用于生成动态网页的装置,其中,上述 模板是由HTML、 XML或者WML表示的模板。
18. 根据权利要求17所述的用于生成动态网页的装置,其中,上述 模板中包含的与上述数据上下文中的至少一个动态数据项相对应的关联信 息被记录在上述模板中的标记的ID属性中。
全文摘要
本发明提供了用于生成动态网页的方法以及用于生成动态网页的装置。根据本发明的一个方面,提供了一种用于生成动态网页的方法,包括以下步骤根据响应浏览器的请求获得的业务逻辑处理的结果,生成结构化的数据上下文,该数据上下文包括至少一个用于上述动态网页的动态数据项;加载与上述请求相关联的模板,该模板可以被浏览器浏览并包含与上述数据上下文中的至少一个动态数据项相对应的关联信息;以及将上述数据上下文中的至少一个动态数据项合并到上述模板中得到动态网页。
文档编号G06F17/30GK101165685SQ20061013577
公开日2008年4月23日 申请日期2006年10月19日 优先权日2006年10月19日
发明者余绍阳, 单建洪, 卢中延 申请人:国际商业机器公司