捌玖网络工作室's Archiver

admin 发表于 2008-1-19 00:10

ASP生成静态Html文件技术汇总

网页生成静态Html文件有许多好处,比如生成html网页有利于被搜索引擎收录,不仅被收录的快还收录的全.前台脱离了数据访问,减轻对数据库访问的压力,加快网页打开速度. 'S-pC{n?'c
像[url]www.aspid.cn[/url]的主站就采用了TSYS生成html文件! ^6z&EK*r3C&QT
所以吟清最近对生成html比较感兴趣,看了不少文章,也有一点点收获.
F7R8fhr
\#h l5z yP"Q x2Z#V 1,下面这个例子直接利用FSO把html代码写入到文件中然后生成.html格式的文件 <% +\'plk"m-Nz/g
filename="test.htm"
3OVSE ` if request("body")<>"" then
J2]i.? J Hk set fso = Server.CreateObject("Scripting.FileSystemObject")
P6U!nj z4@IP5RKL set htmlwrite = fso.CreateTextFile(server.mappath(""&filename&""))
'~2JqSEn*h;I htmlwrite.write "<html><head><title>" & request.form("title") & "</title></head>"
AP C!g]&eFZ#i htmlwrite.write "<body>输出Title内容: " & request.form("title") & "<br /> 输出Body内容:" & request.form("body")& "</body></html>" E+`:X;jA'?m
htmlwrite.close 6V#hkr~u&Fl
set fout=nothing _9CHW^Lw
set fso=nothing D0rY*P?7r
end if
O0q E|-VXZV.@8n %>
i} n^0f <form name="form" method="post" action="">
ec$EsFK'N.Km <input name="title" value="Title" size=26>
t8]*e;Q$XBcy]1A <br>
7H?-Yw+S |jWg <textarea name="body">Body</textarea>
;cg*vy)K0c RI <br> `2R E|X}WG
<br> 5u"a&M5b%AD8mE
<input type="submit" name="Submit" value="生成html">
&v lC raI7e{!S:R </form>
"G)H[2v4{iN 2,但是按照上面的方法生成html文件非常不方便,第二种方法就是利用模板技术,将模板中特殊代码的值替换为从表单或是数据库字段中接受过来的值,完成模板功能;将最终替换过的所有模板代码生成HTML文件.这种技术采用得比较多,大部分的CMS都是使用这类方法.
y\E6U3~Uw*q)vf \.S template.htm ' //模板文件 <html>
+sCk'V{'nh*x <head> ~6_8v'P:isT cl
<title>$title$ by aspid.cn</title>
!A|nXz8X n x0HRxn5i </head>
qTx G I <body>
:N{'{U[,w C $body$
C$oVm5q ``9AQ </body> q)I6Q_f,_@'Z4u
</html> ? E'DCZ+P bP#uIk*X A

B2n-OCd#Ik TestTemplate.asp '// 生成Html <%
@F!Z8Oe8q$zt Dim fso,htmlwrite
F@%Pu'Zi Dim strTitle,strContent,strOut
c$zii.MqG+vbIUBX '// 创建文件系统对象
pcji?2\(L Set fso=Server.CreateObject("Scripting.FileSystemObject")
Uq].Q Wu;Zx '// 打开网页模板文件,读取模板内容
R'msZ*T0`,X#q Set htmlwrite=fso.OpenTextFile(Server.MapPath("Template.htm")) 3C(e?-y1iA'o&d9S
strOut=f.ReadAll
m\M*z:X8q3Y_I htmlwrite.close
8?$Rok V"f,J
\9q iD4a8\4k;[ GD+X strTitle="生成的网页标题"
p?N:akhq k2T3J strC
T E!iz&n
3gz+[ZK '// 用真实内容替换模板中的标记
X7X F\,Q%Hc3_(Y2m P!N strOut=Replace(strOut,"$title$",strTitle)
1x N5h7i7L TSN9@U strOut=Replace(strOut,"$body$",strContent) )h q8jj'[z+N

4o!Gc)W3?tV%ec '// 创建要生成的静态页
A.R)O;P1a9m'ML Set htmlwrite=fso.CreateTextFile(Server.MapPath("test.htm"),true) 6Ul!rjd7F B5v+H6B
]?y:P9Ni `!w
'// 写入网页内容 q!P;x"WJ
htmlwrite.WriteLine strOut
k_3C} W7A.v htmlwrite.close ]+DHA.A:O*N_(A
3u o'H4z4PQ
Response.Write "生成静态页成功!"
T(s&[g;XN;[N 'K2zLR+EO
'// 释放文件系统对象
l'~]f6npY+VU set htmlwrite=Nothing #D"CY{-{ E`h
set fso=Nothing lG1_-pH1@
%>
QEe4|1^9T8@:z"L t D K7?]y_'M(U
3,第三种方法就是用XMLHTTP获取动态页生成的HTML内容,再用ADODB.Stream或者Scripting.FileSystemObject保存成html文件。这句话是在蓝色理想上看到的,对XMLHTTP吟清还不熟悉正在找资料了解.找到一段XMLHTTP生成Html的代码参考一下. "PFke&y k/m |
<%
P:kZ:`LSy-`#r yeZm]1pD
'常用函数
,u#|8vj \ s)h4W1d '1、输入url目标网页地址,返回值getHTTPPage是目标网页的html代码 6P'A(f6`9{)W2y!m3G
function getHTTPPage(url)
C2W#Yq.bF7P D^~ H(k dim Http "ml`LuZ/Mk2qG
set Http=server.createobject("MSXML2.XMLHTTP") F/LUK8Z fEV
Http.open "GET",url,false
(qr e~*uN(Jn9NVZ Http.send() %m0_2t V7Ww5t'|
if Http.readystate<>4 then
%Dna(j`,XG l exit function E%v _3y J z
end if
~#JKe\WY getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
LkwOzv? set http=nothing
-s [v#{ `J U3U7GkF if err.number<>0 then err.Clear
E Etjv0Df4OpC end function `_rhL

)Ka4G)J%| | '2、转换乱玛,直接用xmlhttp调用有中文字符的网页得到的将是乱玛,可以通过adodb.stream组件进行转换 f+n/N5?+_:Y}
Function BytesToBstr(body,Cset) 5_"nhqjkD
dim objstream ;s AF u4m
set objstream = Server.CreateObject("adodb.stream")
*lH:O[iZIk objstream.Type = 1 z&f#Gf z6[n~
objstream.Mode =3
-d%e1_(e,?5F,d objstream.Open
-IV5rxbs objstream.Write body
5ei].W wh hs&c W objstream.Position = 0 /HL |+m'[8Msst
objstream.Type = 2
n(s&O1e,y+`,x:Br objstream.Charset = Cset
P4I8E\}3a0s6b BytesToBstr = objstream.ReadText &_J8M1T u7w,^Z*m
objstream.Close HUP9f(}
set objstream = nothing u.^ Lmx
End Function
Z0J}^4s5H[2Pv 6b^4wLr q!dh

1TC$wa*kY3f*} txtURL=server.MapPath("../index.asp") C8M4TU tz3D

9S~;^US:r sText = getHTTPPage(txtURL)
,w6R+uER[b E Z6u@8~!sj#g7{i
Set FileObject=Server.CreateObject("Scripting.FileSystemObject") |)gJ'Y:X5a1B
filename="../index.htm"
a+}:f1kB-Ghf$kEz0J Set openFile=FileObject.OpenTextfile(server.mapPath(filename),2,true) 'true为不存在自行建立 6i,AaN[;k P%?b7Z@
openFile.writeline(sText)
)l#\g*}^?j&f Set OpenFile=nothing P)iUM?)^Yq

T\5~%~Nh %>
`%[MDq2O fht-p;o <script> x6O#DCK|tnQ
alert("静态网页生成完毕"); :Jq%Ms] AcMq
history.back(); xCF&_v3B
</script>

页: [1]
【捌玖网络】已经运行:


Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.