1. 程式人生 > >asp批量生成html靜態頁面方法

asp批量生成html靜態頁面方法

模板檔案中要替換的內容均以{...}括起來

為力求簡潔,去掉了錯誤處理程式碼(replace中要來替換的字串引數不能為null值,當然fso也應該做錯誤檢查)。
<%
' ---------------------------------------------------------------------------------------------------------------------
' 出自: kevin fung http://www.yaotong.cn
' 作者: kevin fung 落伍者ID:kevin2008,轉載時請保持原樣
' 時間: 2006/07/05落伍者論壇首發
' ----------------------------------------------------------------------------------------------------------------------
Dim start '該變數為指標將要指向的記錄集位置,通過引數動態獲得
Dim Template '模板檔案將以字串讀入該變數
Dim content '替換後的字串變數
Dim objConn '連線物件
Dim ConnStr '連線字串
Dim sql '查詢語句
Dim cnt:cnt = 1 '本輪迴圈計數器初始化

start = request("start") '獲取本輪指標的開始位置
If IsNumeric(start) Then start = CLng(start) Else start=1
If start=0 Then start = 1 '如果start

ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath("DataBase.mdb")
sql = "select * from table_name"

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open ConnStr

set rs = Server.CreateObject("ADODB.Recordset")
rs.open sql,objConn,1,1 '開啟資料集
rs.AbsolutePosition = start '最關鍵的一步,將指標指向start,start通過引數動態獲得

Template = getTemplate(Server.MapPath("template.html"))' template.html為模板檔案,通過函式getTemplate讀入到字串,模板檔案中要替換的內容均以{...}括起來

While Not rs.eof And cnt<= 500 '500是設定一次請求生成頁面的迴圈次數,根據實際情況修改,如果太高了,記錄集很多的時候會出現超時錯誤
content = Replace(Template,"{filed_name_1}",rs("filed_name_1")) '用欄位值替換模板內容
content = Replace(content,"{filed_name_2}",rs("filed_name_2"))
......
content = Replace(content,"{filed_name_n}",rs("filed_name_n"))

genHtml content,Server.MapPath("htmfiles/"&rs("id")&".html") '將替換之後的Template字串生成HTML文件,htmfiles為儲存靜態檔案的目錄,請手動建立

cnt = cnt + 1 '計數器加1
start = start + 1 '指標變數遞增
rs.movenext
wend

If Not rs.eof Then '通過重新整理的方式進行下一輪請求,並將指標變數start傳遞到下一輪
response.write "<meta http-equiv='refresh' content='0;URL=?start="&start&"'>"
Else
response.write "生成HTML檔案完畢!"
End if

rs.Close()
Set rs = Nothing
objConn.Close()
Set objConn = Nothing

Function getTemplate(template)'讀取模板的函式,返回字串,template為檔名
Dim fso,f
set fso=CreateObject("Scripting.FileSystemObject")
set f = fso.OpenTextFile(template)
getTemplate=f.ReadAll
f.close
set f=nothing
set fso=Nothing
End Function

Sub genHtml(content,filename)'將替換後的內容寫入HTML文件,content為替換後的字串,filename為生成的檔名
Dim fso,f
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateTextFile(filename,true)'如果檔名重複將覆蓋舊檔案
f.Write content
f.Close
Set f = Nothing
set fso=Nothing
End Sub
%>