捌玖网络工作室's Archiver

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

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

网页生成静态Html文件有许多好处,比如生成html网页有利于被搜索引擎收录,不仅被收录的快还收录的全.前台脱离了数据访问,减轻对数据库访问的压力,加快网页打开速度.
BRWr r 像[url]www.aspid.cn[/url]的主站就采用了TSYS生成html文件! oMP g EJa*Q_
所以吟清最近对生成html比较感兴趣,看了不少文章,也有一点点收获.
g su9B(kW}
ug?*K~t4Xy 1,下面这个例子直接利用FSO把html代码写入到文件中然后生成.html格式的文件 <% 6\)KC$cm;N,V@/u0EU
filename="test.htm" %[)LZy`@5z
if request("body")<>"" then
#P5Kv%Gwo7w2^m9d+k set fso = Server.CreateObject("Scripting.FileSystemObject")
+K JH3`%N set htmlwrite = fso.CreateTextFile(server.mappath(""&filename&"")) iQzM!XA0tV
htmlwrite.write "<html><head><title>" & request.form("title") & "</title></head>" S0Yg!w*y2HP:x"H
htmlwrite.write "<body>输出Title内容: " & request.form("title") & "<br /> 输出Body内容:" & request.form("body")& "</body></html>" MU T+j!?ks0b7T
htmlwrite.close fg)WmJ r9z
set fout=nothing V3?5D2H1a$V X
set fso=nothing q"sNGko&n%o
end if
b,A{`1`KMoq %> l@E kAS1]\_
<form name="form" method="post" action="">
iTgU ? <input name="title" value="Title" size=26>
6}z?8w)`!bH&m9fja <br>
5lG/A rLB <textarea name="body">Body</textarea> \/Z;EN*v
<br>
%R q)s(f&C/W <br>
1~"J,@a$B5r S"g <input type="submit" name="Submit" value="生成html">
U8Z}B;o!T </form>
j~F&]/Y$Z)` 2,但是按照上面的方法生成html文件非常不方便,第二种方法就是利用模板技术,将模板中特殊代码的值替换为从表单或是数据库字段中接受过来的值,完成模板功能;将最终替换过的所有模板代码生成HTML文件.这种技术采用得比较多,大部分的CMS都是使用这类方法. Y@@ q!Q&P}Bwk9m
template.htm ' //模板文件 <html> (RRAAd6?$f
<head>
'I`o$|/G;h%G1I E4C s <title>$title$ by aspid.cn</title> 0l?$~H p
</head> 1y e/]$BH {(Y q
<body>
T-r9eC#G;b-SL6O $body$
,^?6Ob'Ag </body> 6Bmh.cn U.u3fT+^
</html> ?
3` MG7U&v!G0xjq C2? K4YIe'Um+w
TestTemplate.asp '// 生成Html <%
!Nsa_$O Dim fso,htmlwrite ~&zCwk ohaD{
Dim strTitle,strContent,strOut
[ DN5Sn '// 创建文件系统对象
)|7bquB ? Set fso=Server.CreateObject("Scripting.FileSystemObject") f7z$Q|)nQ IV U
'// 打开网页模板文件,读取模板内容
2Hak9DNv ` Set htmlwrite=fso.OpenTextFile(Server.MapPath("Template.htm"))
n"x c#N-XUO strOut=f.ReadAll
S s3O['m(yXi htmlwrite.close /n0jp8eq C

3[v2cTA ? strTitle="生成的网页标题"
4q.e5_^ S3h0qa F,~ strC Qk.y1@ kj @
Q`7Dv ZI
'// 用真实内容替换模板中的标记 "k z s^6AG1Vg
strOut=Replace(strOut,"$title$",strTitle) @}&wj8Pv r
strOut=Replace(strOut,"$body$",strContent)
!Sdyo%rQ7b"mC4j]
"s| w \6}(PU '// 创建要生成的静态页 )?&]4H9M/rN
Set htmlwrite=fso.CreateTextFile(Server.MapPath("test.htm"),true)
f(Oh,[Pl.L I2P!r7s$r1~#{
'// 写入网页内容 ~A&~w-n
htmlwrite.WriteLine strOut
$qgH g1V,v htmlwrite.close
!u7E]Ct6|,S}]
f ]+XdO'| Response.Write "生成静态页成功!"
.v!Ix|8zk Z7sp d%Pr S[-o-l6p,FdI
'// 释放文件系统对象
!p"R3Y%^`H\u set htmlwrite=Nothing
E-Sf$j&J G,ucU{-q ^ set fso=Nothing
6vRQ K-w %>
7IS"{hx$B&o ~8k-VB {kc
3,第三种方法就是用XMLHTTP获取动态页生成的HTML内容,再用ADODB.Stream或者Scripting.FileSystemObject保存成html文件。这句话是在蓝色理想上看到的,对XMLHTTP吟清还不熟悉正在找资料了解.找到一段XMLHTTP生成Html的代码参考一下.
7shJ6\ `!V#nb/k2U <% _Y g fG8w"x4N

^5M o:m0g |u9M:E '常用函数
4sB gyw,i '1、输入url目标网页地址,返回值getHTTPPage是目标网页的html代码 fj f:kmnZD
function getHTTPPage(url) ;N {HAt*n$K0g!Nt
dim Http 1G`8`!n'ff2A
set Http=server.createobject("MSXML2.XMLHTTP") 6]-V u` TXFT
Http.open "GET",url,false 0\)Yvy4TSVv3zz
Http.send()
U9r8J ol if Http.readystate<>4 then V F#Atf
exit function
CxnBXgK end if
O)wa*G T3tQ getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312") .B)ZI)Ar%I kR
set http=nothing
mptuE6TB0p if err.number<>0 then err.Clear
`U"t$YZ @AN\ end function
e C\Rl$t Y`4t(oo i@
'2、转换乱玛,直接用xmlhttp调用有中文字符的网页得到的将是乱玛,可以通过adodb.stream组件进行转换
u_ @P ^ ]'@ Function BytesToBstr(body,Cset) 0wX!ZcY%W2N
dim objstream NboJE[].I0Np a
set objstream = Server.CreateObject("adodb.stream") 0bdI#xwr Xjx5U
objstream.Type = 1
+zX1Z,m3kI v n objstream.Mode =3
Xk"fEw-yBX objstream.Open
6T1H(MLb)l _8V objstream.Write body 9W%H7U+|.g
objstream.Position = 0
!v6k3qP)Iu objstream.Type = 2 )n ]Dq$sg x
objstream.Charset = Cset
#Xg4r)a5?:bXuf BytesToBstr = objstream.ReadText
.dg*@ ]PN4u"ui objstream.Close !Rh,[Rr o6@Z
set objstream = nothing 8Gb'Y9~JGNkS
End Function
)W,cz@J d8mM v:o$O K

C1h+MuAK-B)k"Ke txtURL=server.MapPath("../index.asp") -b4K0AFmY^
Ur*mF~]
sText = getHTTPPage(txtURL)
C'P \AD E"W
-Jt(_;\7]}P4k Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
We_AO filename="../index.htm"
wx:n/mD8G#_I0Q Set openFile=FileObject.OpenTextfile(server.mapPath(filename),2,true) 'true为不存在自行建立 D6}W1x6[
openFile.writeline(sText) +CPl\2s
Set OpenFile=nothing !kV;f(b8a7U{JE9F
T9Q"MF:[FN
%>
K Q5S"\+nc YB$_ <script>
7~:}p;a7Vq A5B alert("静态网页生成完毕");
)]v$y8c%a0F%z%Tq history.back();
n TJix0M </script>

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


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