关于脚本

来源:互联网 发布:软件结构设计 编辑:程序博客网 时间:2024/04/30 19:41

主要内容是关于脚本对文本的解析,都是些很实用的东西,涉及了很多先进的网络方面的技术。先把名词列出来:HTML,XML,JSP(JavaSeverPage),LSP(LuaSeverPage),Javascript,Lua,PHP,Severlet,StaticPage,DynamicPage,Ajax。

HTML:超文本标记语言,浏览器可以解析的东西。

XML:可扩展的标记语言,我理解是HTML的泛化,没有固定的标签,主要用来保存数据,和数据传输。

StaticPage:静态页面,没有交互的纯纯的html页面,一开始就写好的,主要是用来展示的。

DynamicPage:根据输入的不同动态生成的页面,一开始并不存在。

JavaScript: 可以嵌入到html中的一种脚本,浏览器在客户端可以执行。 

那动态页面是怎么生成的呢?比如用户输入了用户名和密码,提交,这时候数据传到了服务器,服务器根据模板,再加上用户名和密码,生成一份临时的html页面传到客户端,这样用户就看到了一份只跟自己相关的页面。

JSP(JavaSeverPage):就实现了上面的功能,就是上面提到的模板。

html里面根据规定语法潜入Java代码,就形成了JSP,这样的页面是保存在服务器端的模板。在收到用户的request时,Severlet就会解析JSP,生成一份Java代码,然后执行Java代码得到html页面,返回给用户作为response。

LSP(LuaSeverPage):跟JSP实现了同样的功能,只不过这次HTML中嵌入的是Lua代码,服务器会解析这样的页面生成Lua脚本,执行,得到html文本。

下面是Eric给的一个Lua的例子,有些地方我改了:

<%# for day=1 to getcnt()  do #%><td>Any one here?</td><%#end#%>

目标是得到想要的html文本:先通过正则表达式进行替换得到Lua脚本,然后执行Lua脚本得到html文本,这样比较简单,因为我们有现成的Lua解释器或Java解释器。

得到的Lua脚本是:

for day=1 to getcnt() dotheFile.write("<td>Any one here?</td>");end

执行完这段Lua脚本得到的html文本是:

<td>Any one here?</td><td>Any one here?</td><td>Any one here?</td>

很爽吧,这样问题就解决了,html中可以写我们的逻辑,只是我们要自己再处理一下,得到html而已。

PHP也是那种原理。

这样的解析比较重要的两点:regular expression 和 treat code as string。最主要的就是匹配和替换吧。

利用同样的方法我们可以貌似可以解析很多比较复杂的东西。

原创粉丝点击