CN101165685A - 用于生成动态网页的方法及装置 - Google Patents

用于生成动态网页的方法及装置 Download PDF

Info

Publication number
CN101165685A
CN101165685A CNA2006101357740A CN200610135774A CN101165685A CN 101165685 A CN101165685 A CN 101165685A CN A2006101357740 A CNA2006101357740 A CN A2006101357740A CN 200610135774 A CN200610135774 A CN 200610135774A CN 101165685 A CN101165685 A CN 101165685A
Authority
CN
China
Prior art keywords
mentioned
template
web page
dynamic web
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2006101357740A
Other languages
English (en)
Inventor
单建洪
余绍阳
卢中延
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to CNA2006101357740A priority Critical patent/CN101165685A/zh
Priority to US11/863,860 priority patent/US8126901B2/en
Publication of CN101165685A publication Critical patent/CN101165685A/zh
Priority to US12/129,028 priority patent/US20080228809A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明提供了用于生成动态网页的方法以及用于生成动态网页的装置。根据本发明的一个方面,提供了一种用于生成动态网页的方法,包括以下步骤:根据响应浏览器的请求获得的业务逻辑处理的结果,生成结构化的数据上下文,该数据上下文包括至少一个用于上述动态网页的动态数据项;加载与上述请求相关联的模板,该模板可以被浏览器浏览并包含与上述数据上下文中的至少一个动态数据项相对应的关联信息;以及将上述数据上下文中的至少一个动态数据项合并到上述模板中得到动态网页。

Description

用于生成动态网页的方法及装置
技术领域
本发明涉及信息处理技术,更具体地说,涉及生成动态网页的技术。
背景技术
在任何基于浏览器的架构中,不管后台服务器端采用什么样的展现技术和架构设计,其最终返回给浏览器的必须是浏览器能识别的标记语言,包括:超文本标记语言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方法、可扩展标记语言编译器XMLC(eXtensible Markup Language Complier)方法等。但是目前存在的方法,都必然要求网页设计人员和开发人员对同一个模板文件进行协同开发,比如由网页设计人员先完成模板文件(基于标准浏览器能识别的标记语言,比如HTML或者WML等等);然后由开发人员修改这个文件,填入只有开发人员能明白的程序代码,这样就必然破坏了原本模板文件的标准性,使得被修改后的模板不能被标准浏览器所识别,这对网页设计人员的后继维护带来了巨大的挑战,由于该模板里面加入了大量的网页设计人员不可识别的程序语言,造成网页设计人员不能再用原来的网页编辑器进行维护。下面将以现有的部分典型技术为例,做进一步的说明。
Servlet是在网页服务器或应用服务器上运行的一种Java应用程序,用来提供服务器端处理,例如访问数据库等。Servlet将展现标记内容和业务逻辑处理紧密结合在一起。
下面为Servlet的实例的一个片段:
response.setBufferSize(8*1024);
response.setContentSize(“text/html”);
PrintWriter out=response.getWriter();
out.println(“<HTML>”);
out.println(“<HEAD><TITLE>Serlet Output</TITLE></HEAD>”);
out.println(“<BODY>”);
out.println(“<P>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”%>
<HTML>
<BODY>
<P>Welcome to JSP development where the time is:<%=
DateFormat.getTimeInstance().format((new Data()))%>
</BODY>
</HTML>
尽管JSP不需要在编程时编写展现标记,但是对于网页设计人员和开发人员,他们必须能够处理/理解嵌入页中的Java程序和业务逻辑,而这对于网页设计人员来说是很困难的,因为网页设计人员只能认识标准的HTML,而不能认识嵌入在HTML中间的任何Java程序。如果此时要求网页设计人员进行后期的页面风格修改,将导致巨大的困难。一方面是此时的模板文件中加入了大量的非HTML标准标示的代码,另一方面页面编辑工具此时将不可用。
Velocity是基于Java的模板引擎,它允许任何人使用简单而强大的模板语言来引用定义在Java代码中的对象。网页设计人员可以与Java程序员根据模型/视图/控制器(Model/View/Controller,MVC)架构并行开发网页,也就是说,网页设计人员只集中于设计网页,而程序员只集中于编写代码。
下面为Velocity的实例的一个片段:
<HTML>
<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(VelocityTemplate Language,Velocity模板语言),VTL和JSP中的Java代码本质上并没有什么区别。另一方面加入VTL之后,这个模板已经不是纯HTML了,其同样也要求页面开发人员具有一定的前端编程技能。加入VTL之后的模板,已经不能被标准HTML编辑器所识别。此外,Velocity的合并引擎(Merge Engine)是以模板为中心,即先读入模板,然后编译模板文件,同时解释模板中嵌入的VTL,由VTL去访问数据上下文(DataContext),从而进行动态数据替换。Velocity的上下文只是一个数据存储中心,只具有数据,而不具有任何展现相关的信息(由模板中的VTL去解释该数据如何展现)。比如页面要显示10条记录,而业务逻辑返回的数据有20条,Velocity的上下文会放入这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实际上可以处理任何的标记语言,不仅仅限于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请求,例如用户在网上银行上查询余额的请求、用户登陆某个帐户时进行身份认证的请求、基于某个关键字进行搜索的请求等等,本发明对此没有任何限制。并且,本发明只关注业务逻辑处理结果如何向浏览器展现,而根据来自浏览器的请求如何获得业务逻辑处理的结果可以采用现有技术中的任何方法。
在步骤101中的术语“业务逻辑”更多的是一种语义上的术语,而非技术上。只要是跟业务处理有关的任何代码都可以叫做业务逻辑。对于任何系统,其目的都在于:接受用户的输入参数==>根据输入参数进行业务(交易)==>返回显示结果。不管什么系统,都基于这个基本的流程。这里根据输入参数进行的业务(交易),就是所谓的“业务逻辑”。
下面通过两个实例详细地描述在步骤101中进行的业务逻辑处理。
实例1:关于查询余额的请求
首先,用户通过用户界面(UI)(或者是柜员系统的基于胖客户端的系统;或者是普通银行客户使用网上银行的浏览器页面),输入自己的帐号,然后按提交按钮。
接着,将这个查询余额的请求发送到后台服务器上,由后台某个应用接受这个请求。
接着,应用会从请求中提取参数(这里是指:用户输入的帐号),然后交给一个或者多个子程序去处理,以获得该帐号对应的余额。这里的“一个或者多个子程序”就是所谓的业务逻辑。业务逻辑的实现方式有多种,完全依靠用户自己的设计和代码实现。例如,这里可以是一个普通的类,去直接查询数据库,然后得到一个余额信息。或者,通过EJB(EnterpriseJavaBeans,企业JavaBeans)交给一个远程的应用进行处理,此时这个帐号参数就相当于远程应用的一个输入,然后由那个远程应用去处理参数,以获得余额信息。或者,基于SOA(Service-Oriented Architecture,面向服务构架)架构,这个帐号参数可能会交给一个企业服务总线(ESB)的组件,然后进入一个流程,通过JCA(Java Connector Architecture,Java连接器架构)的连接器去访问主机。不管怎么设计这个过程(简单的或者复杂的),其目的都是根据输入的帐号信息得到用户的余额。而这个过程,都可以叫做业务逻辑。
最后,通过业务逻辑处理之后,获得一个帐户余额,该帐户余额即是业务逻辑处理结果,需要把这个帐户余额返回给用户界面,也就是请求响应的动态网页。因此该处理结果中包括用于生成该请求响应动态网页的一个或多个动态数据项,在步骤101中要将该业务逻辑处理结果生成结构化的数据上下文。
实例2:身份认证的请求
首先,用户输入用户名和密码,然后提交请求。
接着,将请求发到后端服务器,相应的应用程序开始启动,从请求中获得用户名和密码。
接着,将获得的用户名和密码发送给相应的业务逻辑去认证该用户名和密码是否正确。这个业务逻辑可以是:直接访问数据库进行用户名/密码对比;交给远程应用服务,该远程应用服务可以是EJB,也可以是SOA,或者轻量级目录访问协议LDAP(Lightweight Directory Access Protocol,)等,把用户名/密码做为远程应用的输入。
接着,业务逻辑会返回一个输出,该输出即是在步骤101中获得的业务逻辑处理结果,该业务逻辑处理结果也就是请求响应的动态网页。例如,提示该用户名密码不正确,或者给出一个信号证明通过验证。此时业务逻辑结束。因此该处理结果中包括用于生成该请求响应动态网页的一个或多个动态数据项,在步骤101中要将该业务逻辑处理结果生成结构化的数据上下文。这里的结构化可以理解为生成特定的数据结构,或者数据类等等,以便于后面处理。
图2中的左面方框显示了一个在步骤101中生成的结构化的数据上下文的实例,该数据上下文包括用于动态网页的一个或多个动态数据项。在该数据上下文的实例中,AccountId、CustomerId和Balance是基本类型数据,而AccountList是一个队列(Array List),该队列用于存储多个数据结构,并且该队列中的每行是一个子数据上下文,即一个AccountInfo类,该AccountInfo类用于存储任何数据,例如AccountNumber、AccountType和AccountBalance的动态数据项。
总而言之,应该理解业务逻辑是一个非常广义的说法,表示的是真正的业务处理逻辑代码,与具体的技术和算法实现没有任何关系。并且我们在该步骤只是获得业务逻辑的处理结果,至于业务逻辑如何处理并不在我们的保护范围之内,此外,在步骤101中生成的结构化的数据上下文以及在数据上下文中包含的动态数据项如何使用将在下面的步骤102中进行详细描述。
接着,在步骤102,加载与在步骤101中的来自浏览器的请求相关联的模板,该模板可以被浏览器浏览并包含与上述数据上下文中的一个或多个动态数据项相对应的关联信息。
模板是网页设计人员工作的结果。现有技术中一般动态网站的开发过程是:首先由网页开发人员开发静态网页(比如纯HTML),然后交给业务开发人员。业务开发人员去修改这个静态网页,其中嵌入大量的业务逻辑或者显示逻辑,使得这个网页可以显示动态数据,此时,这个被修改过的网页就是所谓的“模板”。这些模板是存储在应用服务器端,由应用程序负责读取和解释,根据不同的请求,将这些模板文件最终编译运行为标准的浏览器能识别的标示(比如HTML)返回给客户请求,从而显示在客户端。模板和请求的关联,由客户的应用程序来决定。一种常用的实现是:将模板文件和请求直接关联,比如用户请求的统一资源定位符(URL,Uniform Resource Locator)是:http://www.sample.com/myweb/ account.jsp,则将直接调用名字为“account.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浏览器中显示。在浏览器中显示为如下两个表格:
AccountId  123-456-789  CustomerId  X00192810281
Balance  2234332.00
 AccountNumber  AccountType  AccountBalance
 01010-202920-1929192  Credit  10000.00
对于图2右面方框的纯HTML模型,将一个或多个标记的ID属性作为与上述数据上下文中的一个或多个动态数据项相对应的关联信息,例如,包括AccountId、CustomerId、Balance和AccountList。其中AccountList是一个队列,其中包含了多条记录,每条记录都是另一个子数据上下文(AccountInfo类),AccountInfo类又包括ID属性AccountNumber、AccountType和AccountBalance。这些ID属性对应的被标记的内容可以被图2中的左边方框的数据上下文中的动态数据替换。图2正是显示了图2中的左边方框的数据上下文和图2中的右边方框的模板之间的对应关系,表明图2中的右边的模板是来自浏览器的请求相关联的模板。应该理解,这里示出的纯HTML模型及其ID属性只是为了示例性说明,本发明可以使用其它标记语言(例如XML或者WML等)及其它属性实现。
应该注意,数据上下文的结构应该与显示逻辑相对应,以及生成的格式化数据中的属性名称和层次位置必须与纯HTML模板中定义的各个ID属性相对应。
接着,在步骤103,通过将上述数据上下文中的一个或多个动态数据项合并到上述模板中。
具体地,将上述一个或多个动态数据项合并到上述模板中的方法可以是本领域的技术人员公知的任何方法,其包括但不限于如下步骤:遍历上述生成的数据上下文中的每一个数据项;以及如果在上述模板找到与该数据项相对应的关联信息,则将上述数据项替换到上述模板中的相应位置。
例如,对于上述纯HTML模板,遍历上述生成的数据上下文中的每一个动态数据项,如果在上述纯HTML模板中找到与该动态数据项相对应的ID属性,则将上述动态数据项替换到上述纯HTML模板中的相应位置。而且,当在上述纯HTML模板中没有与上述生成的数据上下文中的该动态数据项相对应的ID属性时,报告该错误信息。此外,当遍历结束时在上述纯HTML模板中还有ID属性的值没被相应的动态数据替换时,报告该错误信息。上述的遍历方法和报错方法可以利用本领域的技术人员公知的任何方法,例如可以采用字符串查找匹配,将id属性出现的位置进行编码或者将模板拆分为DOM结点等等方式,本发明对此并没有限制,在此不再赘述。
此外,本实施例的方法可以在步骤103之前,对上述模板进行语法检查,以发现其中的任何编写错误,并且在步骤103之后,还可以对合并生成的网页进行语法检查,以发现合并过程中产生的任何错误。上述的语法检查方法可以利用本领域的技术人员公知的任何方法,比如标示匹配原则校验,位置定位校验等等,本发明对此并没有限制,在此不再赘述。
通过以上的说明可知,本实施例的用于生成动态网页的方法使用由纯标记语言表示的模板,并不需要附加的编译器对模板进行编译,从而简化了生成动态网页的过程。通过使用纯标记语言表示的模板,可以采用现有的任何标记语言设计工具进行网页设计,从而对于网页设计人员来说不需要任何其它技术要求。此外,网页的整个开发过程和动态功能的实现都是基于标记语言,没有引入任何非标记语言的脚本或标签,从而使网页设计人员和开发人员之间的联系变得简单。此外,本实施例的方法不需要对模板进行任何的预处理,只需要在运行时将其中的动态数据项进行相应的替换,从而是一种简单有效的网页生成方法。
用于生成动态网页的装置
在同一发明构思下,图3是根据本发明的另一个实施例的用于生成动态网页的装置的方框图。下面就结合该图,对本实施例进行描述。对于那些与前面实施例相同的部分,适当省略其说明。
在图3中,用于生成动态网页的装置300包括:业务逻辑处理单元301,根据来自浏览器的请求获得业务逻辑处理的结果,将该业务逻辑处理结果生成结构化的数据上下文,该数据上下文包括至少一个用于上述动态网页的动态数据项;模板加载单元302,用于加载与上述请求相关联的模板,该模板可以被上述浏览器浏览并包含与上述数据上下文中的至少一个动态数据项相对应的关联信息;以及合并单元303,将上述数据上下文中的每一个动态数据合并到上述模板中。
具体地,业务逻辑处理单元301接收到的来自浏览器的请求包括本领域的技术人员公知的任何Web请求,例如用户在网上银行上查询余额的请求、用户登陆某个帐户时进行身份认证的请求、基于某个关键字进行搜索的请求等等,本发明对此没有任何限制。
业务逻辑处理单元301进行的“业务逻辑”更多的是一种语义上的术语,而非技术上。只要是跟业务处理有关的任何代码都可以叫做业务逻辑。对于任何系统,其目的都在于:接受用户的输入参数==>根据输入参数进行业务(交易)==>返回显示结果。不管什么系统,都基于这个基本的流程。这里根据输入参数进行的业务(交易),就是所谓的“业务逻辑”。
描述业务逻辑处理单元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属性的值没被相应的动态数据替换时,该报错单元报告该错误信息。上述遍历单元、替换单元和报错单元可以是本领域的技术人员公知的任何单元,例如可以采用字符串查找匹配单元,将id属性出现的位置进行编码单元或者将模板拆分为DOM结点单元等等方式,本发明对此并没有限制,在此不再赘述。
此外,本实施例的用于生成动态网页的装置300还包括一语法检查单元,其在合并单元303进行上述合并之前,对上述模板进行语法检查,以发现其中的任何编写错误,并且在合并单元303进行上述合并之后,对上述生成的动态网页进行语法检查,以发现合并过程中产生的任何错误。语法检查单元可以是本领域的技术人员公知的任何单元,比如标示匹配原则校验单元,位置定位校验单元等等,本发明对此并没有限制,在此不再赘述。
通过以上的说明可知,本实施例的用于生成动态网页的装置使用由纯标记语言表示的模板,并不需要附加的编译器对模板进行编译,从而简化了生成动态网页的过程。通过使用纯标记语言表示的模板,可以采用现有的任何标记语言设计工具进行网页设计,从而对于网页设计人员来说不需要任何其它技术要求。此外,网页的整个开发过程和动态功能的实现都是基于标记语言,没有引入任何非标记语言的脚本或标签,从而使网页设计人员和开发人员之间的联系变的简单。此外,本实施例的装置不需要对模板进行任何的预处理,只需要在运行时将其中的动态数据项进行相应的替换,从而是一种简单有效的网页生成装置。
以上虽然通过一些示例性的实施例详细地描述了本发明的用于生成动态网页的方法以及用于生成动态网页的装置,但是以上这些实施例并不是穷举的,本领域技术人员可以在本发明的精神和范围内实现各种变化和修改。因此,本发明并不限于这些实施例,本发明的范围仅由所附权利要求为准。

Claims (18)

1.一种用于生成动态网页的方法,包括以下步骤:
根据响应浏览器的请求获得的业务逻辑处理的结果,生成结构化的数据上下文,该数据上下文包括至少一个用于上述动态网页的动态数据项;
加载与上述请求相关联的模板,该模板可以被浏览器浏览并包含与上述数据上下文中的至少一个动态数据项相对应的关联信息;以及
将上述数据上下文中的至少一个动态数据项合并到上述模板中得到动态网页。
2.根据权利要求1所述的用于生成动态网页的方法,其中,上述合并步骤包括:
遍历上述生成的数据上下文中的每一个数据项;
如果在上述模板找到与该数据项相对应的关联信息,则将上述数据项替换到上述模板中的相应位置。
3.根据权利要求2所述的用于生成动态网页的方法,其中,上述合并步骤还包括:
当在上述模板中没有与上述生成的数据上下文中的该数据项相对应的关联信息时,报告该错误信息。
4.根据权利要求2所述的用于生成动态网页的方法,其中,上述合并步骤还包括:
当遍历结束时在上述模板中还有关联信息没被相应的动态数据项替换时,报告该错误信息。
5.根据权利要求1所述的用于生成动态网页的方法,还包括:
在上述合并步骤之前,对上述模板进行语法检查。
6.根据权利要求1所述的用于生成动态网页的方法,还包括:
在上述合并步骤之后,对上述生成的动态网页进行语法检查。
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属性中。
CNA2006101357740A 2006-10-19 2006-10-19 用于生成动态网页的方法及装置 Pending CN101165685A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CNA2006101357740A CN101165685A (zh) 2006-10-19 2006-10-19 用于生成动态网页的方法及装置
US11/863,860 US8126901B2 (en) 2006-10-19 2007-09-28 Method and apparatus for generating a dynamic web page
US12/129,028 US20080228809A1 (en) 2006-10-19 2008-05-29 Method and apparatus for generatng a dynamic web page

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2006101357740A CN101165685A (zh) 2006-10-19 2006-10-19 用于生成动态网页的方法及装置

Publications (1)

Publication Number Publication Date
CN101165685A true CN101165685A (zh) 2008-04-23

Family

ID=39334384

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006101357740A Pending CN101165685A (zh) 2006-10-19 2006-10-19 用于生成动态网页的方法及装置

Country Status (2)

Country Link
US (2) US8126901B2 (zh)
CN (1) CN101165685A (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193933A (zh) * 2010-03-10 2011-09-21 北大方正集团有限公司 一种网页编辑方法及系统
CN102521352A (zh) * 2011-12-12 2012-06-27 中国建设银行股份有限公司 一种用于页面生成的方法和装置
CN102567057A (zh) * 2011-12-26 2012-07-11 山东浪潮齐鲁软件产业股份有限公司 烟草行业云spring框架下类路径快速定位方法
CN102968307A (zh) * 2012-11-29 2013-03-13 中国传媒大学 一种基于java的web开发中间件
CN103294788A (zh) * 2013-05-20 2013-09-11 广州迅睿网络科技有限公司 一种通用网站的后台处理方法及系统
CN103605543A (zh) * 2013-11-19 2014-02-26 北京国双科技有限公司 验证属性转换方法和装置
CN103870254A (zh) * 2012-12-12 2014-06-18 腾讯科技(深圳)有限公司 一种动态表单的实现方法、客户端及服务器
CN104933589A (zh) * 2015-07-07 2015-09-23 北京齐尔布莱特科技有限公司 一种订单生成系统和方法
CN105005568A (zh) * 2014-04-22 2015-10-28 中国银联股份有限公司 基于模板的web页面前端处理装置及方法
CN105893627A (zh) * 2016-05-16 2016-08-24 天津慧涛科技股份有限公司 一种网站信息智能排版管理系统
CN105955759A (zh) * 2016-05-26 2016-09-21 浪潮(苏州)金融技术服务有限公司 一种用于Web开发的模板引擎实现方法
CN106936727A (zh) * 2015-12-30 2017-07-07 中国移动通信集团云南有限公司 一种网页显示方法及装置
CN102760127B (zh) * 2011-04-26 2017-11-03 北京百度网讯科技有限公司 基于扩展文本信息来确定资源类型的方法、装置及设备
CN107391169A (zh) * 2017-06-09 2017-11-24 口碑控股有限公司 安卓页面的动态更新方法和装置
CN107798023A (zh) * 2016-09-07 2018-03-13 广州市动景计算机科技有限公司 网页资源加载方法及网页资源加载装置
CN107798119A (zh) * 2017-11-09 2018-03-13 北京易信掌中云科技有限公司 一种基于云计算的企业官网管理方法及系统
CN108664535A (zh) * 2017-04-01 2018-10-16 北京京东尚科信息技术有限公司 信息输出方法和装置
CN109165016A (zh) * 2018-08-29 2019-01-08 郑州悉知信息科技股份有限公司 网页构建方法和装置
CN110347403A (zh) * 2019-06-28 2019-10-18 北京你财富计算机科技有限公司 一种程序开关控制方法、装置、电子设备
CN111273964A (zh) * 2020-02-14 2020-06-12 北京字节跳动网络技术有限公司 一种数据加载方法及装置

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE47735E1 (en) 2001-04-20 2019-11-19 Progme Corporation Audio/video program-related hyperlink printer
CN101165685A (zh) * 2006-10-19 2008-04-23 国际商业机器公司 用于生成动态网页的方法及装置
KR20110068550A (ko) * 2009-12-16 2011-06-22 삼성전자주식회사 화상형성장치 및 그 로컬 유저 인터페이스 제공방법
US8745639B2 (en) * 2009-12-31 2014-06-03 Cbs Interactive Inc. Controller and method to build a combined web page using data retrieved from multiple APIS
US7770122B1 (en) 2010-04-29 2010-08-03 Cheman Shaik Codeless dynamic websites including general facilities
US8645490B2 (en) * 2010-06-08 2014-02-04 Microsoft Corporation Web site implementation by mapping expression evaluation
US10540416B2 (en) 2011-06-23 2020-01-21 Microsoft Technology Licensing, Llc Linking source code to running element
US10534830B2 (en) 2011-06-23 2020-01-14 Microsoft Technology Licensing, Llc Dynamically updating a running page
US9507871B2 (en) 2011-08-29 2016-11-29 The Boeing Company Methods and systems for a state-based web framework architecture
US9135364B1 (en) 2011-11-10 2015-09-15 Google Inc. Delivery of web pages with markup for speed
US20140281876A1 (en) * 2013-03-15 2014-09-18 Meteor Development Group, Inc. Document element mapping
WO2016072973A1 (en) 2014-11-04 2016-05-12 Hewlett Packard Enterprise Development Lp Web services generation based on client-side code
US9794280B2 (en) * 2015-08-31 2017-10-17 Linkedin Corporation Verifying templates for dynamically generated web pages
US11677809B2 (en) * 2015-10-15 2023-06-13 Usablenet Inc. Methods for transforming a server side template into a client side template and devices thereof
CN108874381B (zh) * 2017-05-09 2021-09-07 武汉斗鱼网络科技有限公司 一种输出页面视图控制器的方法、装置及电子设备
CN107506193B (zh) * 2017-08-18 2020-05-22 平安科技(深圳)有限公司 一种子系统页面的开发方法、存储介质和服务器
CN107515771A (zh) * 2017-09-07 2017-12-26 蓝海天网科技有限公司 基于SpringMVC的API文档生成方法及系统
US10824791B2 (en) * 2018-02-26 2020-11-03 Servicenow, Inc. System for building and modeling web pages
US10783316B2 (en) 2018-02-26 2020-09-22 Servicenow, Inc. Bundled scripts for web content delivery
US11385867B1 (en) 2019-05-03 2022-07-12 Progress Software Corporation Bi-directional design-to-code
US11570182B1 (en) * 2020-03-30 2023-01-31 Amazon Technologies, Inc. Compute-less authorization
US11562043B1 (en) * 2021-10-29 2023-01-24 Shopify Inc. System and method for rendering webpage code to dynamically disable an element of template code

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835712A (en) * 1996-05-03 1998-11-10 Webmate Technologies, Inc. Client-server system using embedded hypertext tags for application and database development
US7111231B1 (en) * 1999-02-24 2006-09-19 Intellisync Corporation System and methodology for dynamic application environment employing runtime execution templates
US6714928B1 (en) * 1999-03-19 2004-03-30 Sybase, Inc. Development system providing HTML database control object
JP2001125855A (ja) 1999-10-26 2001-05-11 Twin Communication Inc 動的Webページ生成プログラム
US7117436B1 (en) * 2000-08-31 2006-10-03 Oracle Corporation Generating a Web page by replacing identifiers in a preconstructed Web page
GB0021513D0 (en) * 2000-09-01 2000-10-18 E2 One Uk Ltd Method and system for dynamic web-page generation and computer-readable storage medium storing a program for performing the method
EP1369790A3 (de) * 2002-05-29 2007-01-24 Siemens Aktiengesellschaft Verfahren zur dynamischen Generierung strukturierter Dokumente
US20040225633A1 (en) * 2003-05-08 2004-11-11 Taiwan Semiconductor Manufacturing Co. Using pure HTML to access database without refreshing page
CN101165685A (zh) * 2006-10-19 2008-04-23 国际商业机器公司 用于生成动态网页的方法及装置

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193933A (zh) * 2010-03-10 2011-09-21 北大方正集团有限公司 一种网页编辑方法及系统
CN102760127B (zh) * 2011-04-26 2017-11-03 北京百度网讯科技有限公司 基于扩展文本信息来确定资源类型的方法、装置及设备
CN102521352A (zh) * 2011-12-12 2012-06-27 中国建设银行股份有限公司 一种用于页面生成的方法和装置
CN102567057A (zh) * 2011-12-26 2012-07-11 山东浪潮齐鲁软件产业股份有限公司 烟草行业云spring框架下类路径快速定位方法
CN102968307B (zh) * 2012-11-29 2016-02-24 中国传媒大学 一种基于java的web开发中间件
CN102968307A (zh) * 2012-11-29 2013-03-13 中国传媒大学 一种基于java的web开发中间件
CN103870254B (zh) * 2012-12-12 2018-10-09 腾讯科技(深圳)有限公司 一种动态表单的实现方法、客户端及服务器
CN103870254A (zh) * 2012-12-12 2014-06-18 腾讯科技(深圳)有限公司 一种动态表单的实现方法、客户端及服务器
CN103294788A (zh) * 2013-05-20 2013-09-11 广州迅睿网络科技有限公司 一种通用网站的后台处理方法及系统
CN103605543A (zh) * 2013-11-19 2014-02-26 北京国双科技有限公司 验证属性转换方法和装置
CN105005568A (zh) * 2014-04-22 2015-10-28 中国银联股份有限公司 基于模板的web页面前端处理装置及方法
CN104933589B (zh) * 2015-07-07 2018-07-03 北京齐尔布莱特科技有限公司 一种订单生成系统和方法
CN104933589A (zh) * 2015-07-07 2015-09-23 北京齐尔布莱特科技有限公司 一种订单生成系统和方法
CN106936727A (zh) * 2015-12-30 2017-07-07 中国移动通信集团云南有限公司 一种网页显示方法及装置
CN105893627A (zh) * 2016-05-16 2016-08-24 天津慧涛科技股份有限公司 一种网站信息智能排版管理系统
CN105955759A (zh) * 2016-05-26 2016-09-21 浪潮(苏州)金融技术服务有限公司 一种用于Web开发的模板引擎实现方法
CN107798023A (zh) * 2016-09-07 2018-03-13 广州市动景计算机科技有限公司 网页资源加载方法及网页资源加载装置
CN108664535A (zh) * 2017-04-01 2018-10-16 北京京东尚科信息技术有限公司 信息输出方法和装置
CN107391169A (zh) * 2017-06-09 2017-11-24 口碑控股有限公司 安卓页面的动态更新方法和装置
CN107798119A (zh) * 2017-11-09 2018-03-13 北京易信掌中云科技有限公司 一种基于云计算的企业官网管理方法及系统
CN109165016A (zh) * 2018-08-29 2019-01-08 郑州悉知信息科技股份有限公司 网页构建方法和装置
CN110347403A (zh) * 2019-06-28 2019-10-18 北京你财富计算机科技有限公司 一种程序开关控制方法、装置、电子设备
CN111273964A (zh) * 2020-02-14 2020-06-12 北京字节跳动网络技术有限公司 一种数据加载方法及装置
CN111273964B (zh) * 2020-02-14 2024-03-08 抖音视界有限公司 一种数据加载方法及装置

Also Published As

Publication number Publication date
US20080228809A1 (en) 2008-09-18
US8126901B2 (en) 2012-02-28
US20080098028A1 (en) 2008-04-24

Similar Documents

Publication Publication Date Title
CN101165685A (zh) 用于生成动态网页的方法及装置
KR100661393B1 (ko) 웹 프로그래밍 환경을 응용한 웹사이트 관리 시스템 및방법
Nentwich et al. Flexible consistency checking
US8347276B2 (en) Systems and methods for software specification and design using a unified document
Williams et al. Web Database Applications with PHP and MySQL: Building Effective Database-Driven Web Sites
CN101339500B (zh) 基于xml模式的数据绑定应用程序接口生成方法
Fu et al. Model checking XML manipulating software
CN104185845A (zh) 用于提供网页的二进制表示的系统和方法
CN108319466A (zh) 一种配置信息的恢复方法和装置
CN101617307B (zh) 编解码设备和方法
Thao A configuration management system for software product lines
CN114968220A (zh) 一种动态门户设计方法及装置
Chikh et al. A new traceable software requirements specification based on IEEE 830
Simic et al. Prospects of encoding Java source code in XML
Zdun et al. Content conversion and generation on the web: A pattern language
Thangarathinam PROFESSIONAL ASP. NET 2.0 XML
Tesoriero et al. Transformation architecture for multi-layered webapp source code generation
CN100545803C (zh) 数据库访问方法和数据库服务器
CN112214215B (zh) 一种面向软件定义卫星的软件快速开发系统与方法
El-Ramly et al. Legacy systems interaction reengineering
Davis et al. Industrial-strength documentation for ACL2
Sengupta et al. Automated Translation of behavioral models using OCL and XML
Reif et al. Using WEESA-to Semantically Annotate Cocoon Web Applications
Lange Semantic Web Collaboration on Semiformal Mathematical Knowledge
CN117473957A (zh) 一种可支持多语言文本解析的装置及其方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20080423