设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 9733|回复: 1
打印 上一主题 下一主题

ASP生成HTML方法一种

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-27 02:45:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个例子是最基础的fso操作例子之一吧。
首先这项技术的优点是:(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就是你那个文件所在地呀

2005-07-09 15:36:19 偸米饭(44018790)
Chris
changecontent这个函数有什么用?

changecontent是一个函数,可能是替换里面的一些字符
那些都是一些Replace的替换操作...
你们根据自己需要进行处理...
不一定必须...

整体原理就是利用FSO的创建文件方法在服务器创建一个网页文件..
然后把代码写到创建的文件里
您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 00:24 , Processed in 0.074466 second(s), 10 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表