基于数据操作语言的动态网页方法

文档序号:6364181阅读:201来源:国知局
专利名称:基于数据操作语言的动态网页方法
技术领域
本发明涉及一种基于数据操作语言的动态网页方法,属于动态网页技术领域。
背景技术
随着Internet(国际互联网)的日益发展壮大,网站建设中使用动态网页技术已经成为主流。目前,最常用的动态网页技术有ASP (Active Server Page动态服务器页面)、 JSP (Java Server Pages 面向对象语言服务器页面)和 PHP (Hypertext Preprocessor 超级文本预处理语言)等。ASP、JSP和PHP都提供在HTML代码中嵌入某种程序代码,由语言引擎解释执行程序代码的能力。在ASP、JSP和PHP环境下,HTML(Hypertext Markup Language 超文本置标语言)代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。 普通的HTML页面只依赖于Web (超文本连接)服务器,而ASP、JSP和PHP页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到HTML代码中,然后一起发送给客户端浏览器。ASP、JSP和PHP三者都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。本发明在参考主流动态网页技术实现原理的基础上,创造了一种动态网页技术——LSP0 LSP指的就是Lua Server Pages (数据操作语言服务器页面),就是在HTML页面中嵌入Lua脚本语言,用Lua语言作为数据操作的语言,模板语言为HTML,生成的目标语言为HTML。

发明内容
技术问题本发明针对动态网页生成方式,采用可嵌入式脚本语言Lua语言作为数据操作的语言,模板语言为HTML,生成的目标语言为HTML,提出一种简化配置工作,高效稳定的基于数据操作语言的动态网页方法。技术方案本发明公开了一种基于数据操作语言的动态网页方法,包括如下步骤在HTML页面中,用数据操作语言Iua自定义数据表达式代码标签和函数调用逻辑控制代码标签,生成LSP文件;输入LSP文件位置,执行LSP文件读入HTML文件,将LSP文件中HTML代码写入输出函数中,生成Lua代码文件;数据和嵌入Lua代码表达式的可执行HTML模板长字符串绑定,生成字符中间代码文件;执行字符中间代码文件输出HTML目标代码;将逻辑控制代码嵌入HTML模板中,生成控制中间代码文件,执行控制中间代码文件输出HTML目标代码。LSP的实现原理,标签的定义
定义标签“〈# =…用于在HTML中嵌入一段Lua表达式,这个表达式在代码生成的时候将会被解析成对应的值。定义标签“〈#···#>”用于在HTML中嵌入一段Lua逻辑控制代码,这个代码会和其余的Lua代码一起执行,一起控制最终的HTML代码的生成。从LSP到HTML的解析、转化过程数据的操作语言是lua,Iua本身有强大的语法支持,可以通过扩展获取任意形式的数据,如数据库和文本等。将LSP代码生成HTML代码实际上是等价于将LSP代码中的所有Lua代码替换掉,但是这个替换不是简单的替换,是需要解析Lua代码最终的执行值的, 所以模板的解析也就是所有代码生成技术的核心。可以把LSP到HTML的转换过程分成两步LSP代码的解析和最终HTML页面的生成。LSP的解析阶段把LSP模板转化成可执行的纯 Lua脚本。HTML页面生成阶段则把对应的可执行模板和数据绑定,生成最终的HTML页面。 这两个阶段和JSP生成HTML页面的两个阶段类似一、编译JSP生成对应的Serverlet (服务器端的Java应用程序),实际上是一个可执行的class实体;二、解决用户的页面请求执行对应的Serverlet生成HTML页面发送给客户端。表达式代码解析过程,以下面的模板为例Today is <# = expressionl = >, Wedding这个模板是一个场字符串中间嵌入了一个Lua表达式,模板和数据绑定后生成的结果应该是这个长字符串中间嵌入这个表达式的值的结果。如果expressionl最后的解析的结果是2012. I. 1,那生成的目标代码应该是Today is :2012. I. I, Wedding
把该模板在第一步解析后生成如下的中间代码
Tempf ile. Write ( “Today is: ”)
Tempfile. Write(expressionl)
码。TempFile. Write ( “,Wedding”) 执行这段中间代码就能在指定的文件一—Tempfil
逻辑控制代码解析过程,
以下面的模板为例
<#Codel#>
May you have a wonderful new lifetogether !
<#Code2#>
具体可以是这样
<#for value = Ito 3do#>
May you have a wonderful new lifetogether !
<#end#>
最终的目标是生成
May you have a wonderful new lifetogether !
May you have a wonderful new lifetogether !
May you have a wonderful new life together !这个模板在第一步解析后生成如下的中间代码for value = Ito 3doTempfile. Write (" May you have a wonderful new life together !")end执行这段中间代码就能在指定的文件一Tempfile里面输出最终的目标HTML代码。以上的方案就是整个LSP的解析和最终HTML页面的生成生成流程,实际上这个中间结果非常重要,如果直接生成最终的目标非常困难,但是如果是要生成这个中间的代码过程非常简单,就是一些字符串的模式匹配。综上所述,本发明创造是在网页HTML中嵌入Lua代码;网页中嵌入Lua代码的标签是自定义的;服务器端的解析过程,该过程如下将嵌入了 Lua代码的HTML页面首先通过自己写的函数全部转换为Lua代码,接着将转换得到的纯Lua代码文件通过Lua解析器运行,生成最终提供给用户客户端的纯HTML代码。解析函数过程如下这个函数的输入是一个模板文件地址,函数内部首先打开文件读出模板,然后将整个模板字符串编译成一个可执行的函数对象,并返回这个对象。最终HTML页面生成函数通过输入一个模板和一个数据,将他们绑定成对应的代码并输出到指定的HTML文件里面。有益效果本发明公开了基于数据操作语言的动态网页方法,通过采用可嵌入式脚本语言Lua语言作为数据操作的语言,模板语言为HTML,生成的目标语言为HTML,在不增加系统资源消耗的基础上,实现可简化配置工作,高效稳定,通用易读的动态网页。


图I是本发明的编程技术流程示意框图。
具体实施例方式下面是本发明的具体实施例来进一步描述通过图I所示,本发明的基于数据操作语言的动态网页方法,包括如下步骤在HTML页面中,用数据操作语言Iua自定义数据表达式代码标签和函数调用逻辑控制代码标签,生成LSP文件;输入LSP文件位置,执行LSP文件读入HTML文件,将LSP文件中HTML代码写入输出函数中,生成Lua代码文件;数据和嵌入Lua代码表达式的可执行HTML模板长字符串绑定,生成字符中间代码文件;执行字符中间代码文件输出HTML目标代码;将逻辑控制代码嵌入HTML模板中,生成控制中间代码文件,执行控制中间代码文件输出HTML目标代码。LSP服务器端的实现,LSP解析函数
根据上述的分析,首先定义一个解析模板的函数,这个函数的输入是一个模板文件地址,函数内部首先打开文件读出模板,然后在整个模板字符串编译成一个可执行的函数对象,并返回这个对象。具体代码如下
function IoadTemplate(filename)
local tf = assert(io.open(filename,"r")) local code = tf:read(〃氺all〃)
—print (tf)
—print (code)
print C—----code—if (code)thenlocalIastpos=IlocalPOS=Olocalsposlocaldstcode =whiletrue do
lastpos=pos+l
spos,pos,eqs,cd 二 code: find("<#(= ) (.-) #>",pos)
__print (〃------spos, pos-------〃)
—print (spos, pos)
—print C------eqs,cd-------")
—print (eqs, cd) i f not spos thendstcode二dstcode. . "theFiLe:write(\[\[〃· · code: sub (Iastpos)··"\]\])\ break
elseif ( lastpos<spos) then dstcode^dstcode. . ^theFileiwrite(\[\[/r. . code:sub(lastpos, spos-1). ·
end
if eqs=="=〃 then
dstcode=dstcode..〃theFile:write(〃. . cd. . 〃)\n〃
dstcode^dstcode..cd. · 〃\n〃
end
end
—print (〃------------------------
--print(dstcode)
—print(〃-----------------
return loadstring(dstcode)
end
end最终HTML页面生成函数通过输入一个模板和一个数据,将他们绑定成对应的代码并输出到指定的HTML文件里面。具体代码如下
function bind(template_file, data_file, output_file) if template_file and data—file and output_file then local-tpl = IoadTemplate(tempiate_file) if tpl then
local data_f 二 loadfile(data_file) if data—f then data_f ()
elsetheFile 二 io. open (output—I'ile, 〃w〃) if theFile then
print ("binding … [",data_file,"] + [", template—file , "] = [" , output_file, "]") tpl 0 else
print ("binding failed, invlaid output file : 〃,
output_file)
end
else
print (^binding .failed, invalid data file : , data_file)"
end
else
print ("binding failed,invalid template : 〃,template—file)
end
else
print ("binding failed, missing parameter!!!")
end
权利要求
1. 一种基于数据操作语言的动态网页方法,其特征在于包括如下步骤,在HTML页面中,用数据操作语言Iua自定义数据表达式代码标签和函数调用逻辑控制代码标签,生成LSP文件;输入LSP文件位置,执行LSP文件读入HTML文件,将LSP文件中HTML代码写入输出函数中,生成Lua代码文件;数据和嵌入Lua代码表达式的可执行HTML模板长字符串绑定,生成字符中间代码文件;执行字符中间代码文件输出HTML目标代码;将逻辑控制代码嵌入HTML模板中,生成控制中间代码文件,执行控制中间代码文件输出HTML目标代码。
全文摘要
本发明公开了一种基于数据操作语言的动态网页方法,属于动态网页技术领域。本发明创造是在网页HTML中嵌入Lua代码;网页中嵌入Lua代码的标签是自定义的;服务器端的解析过程是将嵌入了Lua代码的HTML页面,首先通过自己写的函数全部转换为Lua代码,接着将转换得到的纯Lua代码文件通过Lua解析器运行,生成最终提供给用户客户端的纯HTML代码。本发明在主流动态网页技术的基础上,实现了一种在HTML中嵌入Lua语言的动态网页技术——LSP。
文档编号G06F17/30GK102609505SQ20121002375
公开日2012年7月25日 申请日期2012年2月3日 优先权日2012年2月3日
发明者姚振刚 申请人:姚振刚
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1