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