古詩詞大全網 - 成語故事 - 哪位高手給寫段ASP生成靜態頁的源碼

哪位高手給寫段ASP生成靜態頁的源碼

網頁生成靜態Html文件有許多好處,比如生成html網頁有利於被搜索引擎收錄,不僅被收錄的快還收錄的全.前臺脫離了數據訪問,減輕對數據庫訪問的壓力,加快網頁打開速度.

像www.aspid.cn的主站就采用了TSYS生成html文件!

所以吟清最近對生成html比較感興趣,看了不少文章,也有壹點點收獲.

1,下面這個例子直接利用FSO把html代碼寫入到文件中然後生成.html格式的文件 <%

filename="test.htm"

if request("body")<>"" then

set fso = Server.CreateObject("Scripting.FileSystemObject")

set htmlwrite = fso.CreateTextFile(server.mappath(""&filename&""))

htmlwrite.write "<html><head><title>" & request.form("title") & "</title></head>"

htmlwrite.write "<body>輸出Title內容: " & request.form("title") & "<br /> 輸出Body內容:" & request.form("body")& "</body></html>"

htmlwrite.close

set fout=nothing

set fso=nothing

end if

%>

<form name="form" method="post" action="">

<input name="title" value="Title" size=26>

<br>

<textarea name="body">Body</textarea>

<br>

<br>

<input type="submit" name="Submit" value="生成html">

</form>

2,但是按照上面的方法生成html文件非常不方便,第二種方法就是利用模板技術,將模板中特殊代碼的值替換為從表單或是數據庫字段中接受過來的值,完成模板功能;將最終替換過的所有模板代碼生成HTML文件.這種技術采用得比較多,大部分的CMS都是使用這類方法.

template.htm ' //模板文件 <html>

<head>

<title>$title$ by aspid.cn</title>

</head>

<body>

$body$

</body>

</html> ?

TestTemplate.asp '// 生成Html <%

Dim fso,htmlwrite

Dim strTitle,strContent,strOut

'// 創建文件系統對象

Set fso=Server.CreateObject("Scripting.FileSystemObject")

'// 打開網頁模板文件,讀取模板內容

Set htmlwrite=fso.OpenTextFile(Server.MapPath("Template.htm"))

strOut=f.ReadAll

htmlwrite.close

strTitle="生成的網頁標題"

strContent="生成的網頁內容"

'// 用真實內容替換模板中的標記

strOut=Replace(strOut,"$title$",strTitle)

strOut=Replace(strOut,"$body$",strContent)

'// 創建要生成的靜態頁

Set htmlwrite=fso.CreateTextFile(Server.MapPath("test.htm"),true)

'// 寫入網頁內容

htmlwrite.WriteLine strOut

htmlwrite.close

Response.Write "生成靜態頁成功!"

'// 釋放文件系統對象

set htmlwrite=Nothing

set fso=Nothing

%>

3,第三種方法就是用XMLHTTP獲取動態頁生成的HTML內容,再用ADODB.Stream或者Scripting.FileSystemObject保存成html文件。這句話是在藍色理想上看到的,對XMLHTTP吟清還不熟悉正在找資料了解.找到壹段XMLHTTP生成Html的代碼參考壹下.

<%

'常用函數

'1、輸入url目標網頁地址,返回值getHTTPPage是目標網頁的html代碼

function getHTTPPage(url)

dim Http

set Http=server.createobject("MSXML2.XMLHTTP")

Http.open "GET",url,false

Http.send()

if Http.readystate<>4 then

exit function

end if

getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")

set http=nothing

if err.number<>0 then err.Clear

end function

'2、轉換亂瑪,直接用xmlhttp調用有中文字符的網頁得到的將是亂瑪,可以通過adodb.stream組件進行轉換

Function BytesToBstr(body,Cset)

dim objstream

set objstream = Server.CreateObject("adodb.stream")

objstream.Type = 1

objstream.Mode =3

objstream.Open

objstream.Write body

objstream.Position = 0

objstream.Type = 2

objstream.Charset = Cset

BytesToBstr = objstream.ReadText

objstream.Close

set objstream = nothing

End Function

txtURL=server.MapPath("../index.asp")

sText = getHTTPPage(txtURL)

Set FileObject=Server.CreateObject("Scripting.FileSystemObject")

filename="../index.htm"

Set openFile=FileObject.OpenTextfile(server.mapPath(filename),2,true) 'true為不存在自行建立

openFile.writeline(sText)

Set OpenFile=nothing

%>

<script>

alert("靜態網頁生成完畢");

history.back();

</script>