去年搞的一个网上商店,最近生意还不错,就是公司的工作时间太长了。晚上回家基本都八点左右了,洗洗涮涮差不多快十点,剩下的时间上网看一下邮件和QQ差不多12点了。要不是姐夫工作还轻松可以帮着处理一下发货的事,网站可能早停了。尝到了鱼和熊掌不能兼顾的味道。如果网站照这样下去的话,有点希望,过段时间打算辞职专心搞搞看。 商品越来越多,ASP页浏览起来有点慢,而且也不利于搜索网的收录,想法改成html的,网上找的一段资料。 首先这项技术的优点是:(1)减轻数据库的压力;(2)把数据库和页面隔离开来 然后给大家讲一下实现原理..
ASP生成HTML其实是使用服务器的FSO内置对象.. 其定义方法为 set fs=createobject("scripting.filesystemobject") '设置FSO对象
在建立FSO对象后就可以对服务器进行文件及文件夹管理操作... 所以在服务器新建一个网页文件也是很轻松的事...
sub SaveText(FileName,Data) '这是一个用于写文本文件的过程 dim fs,ts,path '定义变量 set fs=createobject("scripting.filesystemobject") '设置FSO对象 if instr(filename,":/")<>0 then '判断是不是绝对路径 path=filename else path=server.MapPath(FileName) end if set ts=fs.createtextfile(path,true) '创建文件对象 ts.writeline(data) '写数据 ts.close '关闭对象 set ts=nothing set fs=nothing end sub
这是一个建立所在类型文件的子程序.. 对重要语句都给了一定的注释... 功能就是向服务器的指定路径创建一个文件并将数据写进去.. 其调用方式为: savetext "D:/chris.html","chris" 大家可以在自己的电脑上试一下.. 第一个参数为Chris.html 文件内容为chris
了解了创建文件的原理之后就可以对网站进行批量网页生成..
但是在生成以前我们必须得为生成的页面制作一个模板...
下面我举个例子..
Mode.asp ------------------ <body onLoad="window.focus();"> <table width="700" border="0" align="center" cellpadding="0" cellspacing="0" class="table"> <tr> <td><br> <table width="600" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td style="LEFT: 0px; WIDTH: 600 xp; WORD-WRAP: break-word"><p><font size="2"><%=rs("bigclass")%> -> <%=rs("smallclass")%> -> <font color="#FF9B9B"><%=rs("title")%></font></font></p> <p><font size="2"><%response.Write(ubbcode(rs("content")))%></font></p> <p> </p> <p align="right"><font size="2">摘自:<%=rs("path")%> </font></p></td> </tr> </table></td> </tr> <tr> <td><div align="center"><font size="2"><br> 发布时间:<font color="#FF9B9B"><%=rs("time")%></font> 浏览次数:<font color="#FF9B9B"><%=rs("browse")%></font></font></div></td> </tr> <tr> <td> </td> </tr> </table> </body>
这是一个模板文件....
下面要做的操作就是制作一个生成页面...
这个生成页面要做的工作是将Mode.asp的文件内容读出.然后将其需要动态替换的地方替换成需要的内容..
set fso=server.CreateObject("scripting.filesystemobject") '创建一个FSO对象 set myfile=fso.getfile(filepath) '设置一个文件对象..filepath就是这个模板文件的名称 set ts=myfile.openastextstream '设置一个文本对象..并打开这个对象... if not ts.atendofstream then content=changecontent(ts.readline) do while not ts.atendofstream content=content+vbcrlf content=content+changecontent(ts.readline) loop
将模板文件的内容赋值到content变量里...
再对其模板内容处理后生成新的网页文件...
例如 Replace(content,"<%=rs("title")%"&">",title) 将模板文件的<%=Rs("title")%>替换为文章标题...
其他的Content,Time,Browse以此类推...
Content进行处理后就是一个完整的网页文件.. 将其输出就完成了网页的生成.. sub SaveText(FileName,Data) '这是一个用于写文本文件的过程 dim fs,ts,path '定义变量 set fs=createobject("scripting.filesystemobject") '设置FSO对象 if instr(filename,":/")<>0 then '判断是不是绝对路径 path=filename else path=server.MapPath(FileName) end if set ts=fs.createtextfile(path,true) '创建文件对象 ts.writeline(data) '写数据 ts.close '关闭对象 set ts=nothing set fs=nothing end sub
savetext CreateFileName,Content '调用写文件子程序
使用模板自动生成原理基本上就是这样... 主要问题在于大家使用过程中的一些细节问题的注意... 一会儿我会让大家看一个比较成熟的FSO的展示程序...
set myfile=fso.getfile(uta(filepath)) ---------------------- 在FSO对象的基础上建立一个文件对象...
myfile=你指定的那个文件..
if not ts.atendofstream then content=changecontent(ts.readline) '判断文件是否为空.如果不为空才进行赋值操作 do while not ts.atendofstream 'AtEndOfStream判断是不是文件的末尾 content=content+vbcrlf content=content+changecontent(ts.readline) loop
FSO对象的属性和方法比较多...如果大家感兴趣可以参考一下VBS参考手册.. 我在这里只是起一个引导作用...给大家讲解一下成生网页文件..
content=content+vbcrlf content=content+changecontent(ts.readline) 是做什么的 ------------------------------------ 把文件按行读出来...
AtEndOfStream判断是不是文件的末尾 刚才Chris已经讲了 do while not ts.atendofstream 'AtEndOfStream判断是不是文件的末尾 content=content+vbcrlf content=content+changecontent(ts.readline) loop 的意思就是说,把文件中的一行一行读出来
只是一个函数.. function uta(val) uta=replace(val,"*","&") end function
filepath是在哪里取的? filepath就是你那个文件所在地呀
changecontent这个函数有什么用? changecontent是一个函数,可能是替换里面的一些字符 那些都是一些Replace的替换操作... 你们根据自己需要进行处理... 不一定必须...
整体原理就是利用FSO的创建文件方法在服务器创建一个网页文件.. 然后把代码写到创建的文件里...就是这样..
|