首先這項技術的優點是:(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的建立檔案方法在伺服器建立一個網頁檔案..
然後把代碼寫到建立的檔案裡...就是這樣..