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內(nèi)容: " & request.form("title") & "<br /> 輸出Body內(nèi)容:" & 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文件非常不方便,第二種方法就是利用模板技術,將模板中特殊代碼的值替換為從表單或是數(shù)據(jù)庫字段中接受過來的值,完成模板功能;將最終替換過的所有模板代碼生成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
’// 創(chuàng)建文件系統(tǒng)對象
Set fso=Server.CreateObject("Scripting.FileSystemObject")
’// 打開網(wǎng)頁模板文件,讀取模板內(nèi)容
Set htmlwrite=fso.OpenTextFile(Server.MapPath("Template.htm"))
strOut=f.ReadAll
htmlwrite.close
strTitle="生成的網(wǎng)頁標題"
strContent="生成的網(wǎng)頁內(nèi)容"
’// 用真實內(nèi)容替換模板中的標記
strOut=Replace(strOut,"$title$",strTitle)
strOut=Replace(strOut,"$body$",strContent)
’// 創(chuàng)建要生成的靜態(tài)頁
Set htmlwrite=fso.CreateTextFile(Server.MapPath("test.htm"),true)
’// 寫入網(wǎng)頁內(nèi)容
htmlwrite.WriteLine strOut
htmlwrite.close
Response.Write "生成靜態(tài)頁成功!"
’// 釋放文件系統(tǒng)對象
set htmlwrite=Nothing
set fso=Nothing
%>
3,第三種方法就是用XMLHTTP獲取動態(tài)頁生成的HTML內(nèi)容,再用ADODB.Stream或者Scripting.FileSystemObject保存成html文件。這句話是在藍色理想上看到的,對XMLHTTP吟清還不熟悉正在找資料了解.找到一段XMLHTTP生成Html的代碼參考一下.
<%
’常用函數(shù)
’1、輸入url目標網(wǎng)頁地址,返回值getHTTPPage是目標網(wǎng)頁的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調用有中文字符的網(wǎng)頁得到的將是亂瑪,可以通過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("靜態(tài)網(wǎng)頁生成完畢");
history.back();
</script> |