首先這項(xiàng)技術(shù)的優(yōu)點(diǎn)是:(1)減輕數(shù)據(jù)庫的壓力;(2)把數(shù)據(jù)庫和頁面隔離開來
然后給大家講一下實(shí)現(xiàn)原理..
ASP生成HTML其實(shí)是使用服務(wù)器的FSO內(nèi)置對象..
其定義方法為
set fs=createobject("scripting.filesystemobject") ‘設(shè)置FSO對象
在建立FSO對象后就可以對服務(wù)器進(jìn)行文件及文件夾管理操作...
所以在服務(wù)器新建一個網(wǎng)頁文件也是很輕松的事...
sub SaveText(FileName,Data) ‘這是一個用于寫文本文件的過程
dim fs,ts,path ‘定義變量
set fs=createobject("scripting.filesystemobject") ‘設(shè)置FSO對象
if instr(filename,":\")<>0 then ‘判斷是不是絕對路徑
path=filename
else
path=server.MapPath(FileName)
end if
set ts=fs.createtextfile(path,true) ‘創(chuàng)建文件對象
ts.writeline(data) ‘寫數(shù)據(jù)
ts.close ‘關(guān)閉對象
set ts=nothing
set fs=nothing
end sub
這是一個建立所在類型文件的子程序..
對重要語句都給了一定的注?..
功能就是向服務(wù)器的指定路徑創(chuàng)建一個文件并將數(shù)據(jù)寫進(jìn)去..
其調(diào)用方式為:
savetext "D:\chris.html","chris"
大家可以在自己的電腦上試一下..
第一個參數(shù)為Chris.html
文件內(nèi)容為chris
了解了創(chuàng)建文件的原理之后就可以對網(wǎng)站進(jìn)行批量網(wǎng)頁生成..
但是在生成以前我們必須得為生成的頁面制作一個模板...
下面我舉個例子..
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>
發(fā)布時(shí)間:<font color="#FF9B9B"><%=rs("time")%></font> 瀏覽次數(shù):<font color="#FF9B9B"><%=rs("browse")%></font></font></div></td>
</tr>
<tr>
<td> </td>
</tr>
</table>
</body>
這是一個模板文件....
下面要做的操作就是制作一個生成頁面...
這個生成頁面要做的工作是將Mode.asp的文件內(nèi)容讀出.然后將其需要動態(tài)替換的地方替換成需要的內(nèi)容..
set fso=server.CreateObject("scripting.filesystemobject") ‘創(chuàng)建一個FSO對象
set myfile=fso.getfile(filepath) ‘設(shè)置一個文件對象..filepath就是這個模板文件的名稱
set ts=myfile.openastextstream ‘設(shè)置一個文本對象..并打開這個對象...
if not ts.atendofstream then content=changecontent(ts.readline)
do while not ts.atendofstream
content=content+vbcrlf
content=content+changecontent(ts.readline)
loop
將模板文件的內(nèi)容賦值到content變量里...
再對其模板內(nèi)容處理后生成新的網(wǎng)頁文件...
例如
Replace(content,"<%=rs("title")%"&">",title)
將模板文件的<%=Rs("title")%>替換為文章標(biāo)題...
其他的Content,Time,Browse以此類推...
Content進(jìn)行處理后就是一個完整的網(wǎng)頁文件..
將其輸出就完成了網(wǎng)頁的生成..
sub SaveText(FileName,Data) ‘這是一個用于寫文本文件的過程
dim fs,ts,path ‘定義變量
set fs=createobject("scripting.filesystemobject") ‘設(shè)置FSO對象
if instr(filename,":\")<>0 then ‘判斷是不是絕對路徑
path=filename
else
path=server.MapPath(FileName)
end if
set ts=fs.createtextfile(path,true) ‘創(chuàng)建文件對象
ts.writeline(data) ‘寫數(shù)據(jù)
ts.close ‘關(guān)閉對象
set ts=nothing
set fs=nothing
end sub
savetext CreateFileName,Content ‘調(diào)用寫文件子程序
使用模板自動生成原理基本上就是這樣...
主要問題在于大家使用過程中的一些細(xì)節(jié)問題的注意...
一會兒我會讓大家看一個比較成熟的FSO的展示程序...
set myfile=fso.getfile(uta(filepath))
----------------------
在FSO對象的基礎(chǔ)上建立一個文件對象...
myfile=你指定的那個文件..
if not ts.atendofstream then content=changecontent(ts.readline) ‘判斷文件是否為空.如果不為空才進(jìn)行賦值操作
do while not ts.atendofstream ‘AtEndOfStream判斷是不是文件的末尾
content=content+vbcrlf
content=content+changecontent(ts.readline)
loop
FSO對象的屬性和方法比較多...如果大家感興趣可以參考一下VBS參考手冊..
我在這里只是起一個引導(dǎo)作用...給大家講解一下成生網(wǎng)頁文件..
content=content+vbcrlf
content=content+changecontent(ts.readline)
是做什么的
------------------------------------
把文件按行讀出來...
AtEndOfStream判斷是不是文件的末尾 剛才Chris已經(jīng)講了
do while not ts.atendofstream ‘AtEndOfStream判斷是不是文件的末尾 content=content+vbcrlf
content=content+changecontent(ts.readline)
loop
的意思就是說,把文件中的一行一行讀出來
只是一個函數(shù)..
function uta(val)
uta=replace(val,"*","&")
end function
filepath是在哪里取的?
filepath就是你那個文件所在地呀
2005-07-09 15:36:19 偸米飯(44018790)
Chris
changecontent這個函數(shù)有什么用?
changecontent是一個函數(shù),可能是替換里面的一些字符
那些都是一些Replace的替換操作...
你們根據(jù)自己需要進(jìn)行處理...
不一定必須...
整體原理就是利用FSO的創(chuàng)建文件方法在服務(wù)器創(chuàng)建一個網(wǎng)頁文件..
然后把代碼寫到創(chuàng)建的文件里...就是這樣..