捌玖网络工作室's Archiver

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

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

网页生成静态Html文件有许多好处,比如生成html网页有利于被搜索引擎收录,不仅被收录的快还收录的全.前台脱离了数据访问,减轻对数据库访问的压力,加快网页打开速度.
0uw,k @*h[)G 像[url]www.aspid.cn[/url]的主站就采用了TSYS生成html文件!
tQ(Q6wd0N-s.F o6^ 所以吟清最近对生成html比较感兴趣,看了不少文章,也有一点点收获.
^.X*vB:h ~ ]8kE yH ?kL [!}
1,下面这个例子直接利用FSO把html代码写入到文件中然后生成.html格式的文件 <%
;]3U%lCw6rT5f!n filename="test.htm"
)i|-P+fHc!L:mQ2C if request("body")<>"" then 8` zqkM zeu
set fso = Server.CreateObject("Scripting.FileSystemObject") r[,sko_0vGt
set htmlwrite = fso.CreateTextFile(server.mappath(""&filename&""))
lZrFUeM1[ htmlwrite.write "<html><head><title>" & request.form("title") & "</title></head>" 0LIl J3N"B"a } k3g
htmlwrite.write "<body>输出Title内容: " & request.form("title") & "<br /> 输出Body内容:" & request.form("body")& "</body></html>" $D%z&@,W2c2q"x
htmlwrite.close
%jBJ1JN8m3u,f set fout=nothing "xMIiY'_"XO|+T
set fso=nothing
\4B}/tHn(~x.E*d5k end if y!Ljv#AI` w1j
%> D9v9V7O(hqS
<form name="form" method="post" action=""> j;cF2B@H5D
<input name="title" value="Title" size=26>
'ZF {8M(Z u%U,TT <br>
Iz2] ~L5M/m <textarea name="body">Body</textarea> 4VyV\&Np
<br> 7St'j MTW
<br> -oS l\0K|].r b
<input type="submit" name="Submit" value="生成html"> %d_S W#U0zQ
</form> )a pm!IoYa'XH$}
2,但是按照上面的方法生成html文件非常不方便,第二种方法就是利用模板技术,将模板中特殊代码的值替换为从表单或是数据库字段中接受过来的值,完成模板功能;将最终替换过的所有模板代码生成HTML文件.这种技术采用得比较多,大部分的CMS都是使用这类方法. B,@M1C9_%M0qB9V
template.htm ' //模板文件 <html> 'e"fy4S1Th
<head>
d [9@'?N <title>$title$ by aspid.cn</title> .{SA0v$\%f
</head>
x]+K;YbZ <body>
| j/H2Y AM8m|R $body$
hqX3fF+n2I </body> EI5A.^ n
</html> ?
De:`'a5l "BA+^#Rd;EiX
TestTemplate.asp '// 生成Html <% {9ie:A5F s ^
Dim fso,htmlwrite &j:\P*B;Cv
Dim strTitle,strContent,strOut
-pqM-O it0T(W '// 创建文件系统对象 a!C4j'z'H\Q
Set fso=Server.CreateObject("Scripting.FileSystemObject")
IdOd)O0ETt '// 打开网页模板文件,读取模板内容 rbXe2o;a
Set htmlwrite=fso.OpenTextFile(Server.MapPath("Template.htm"))
-SqQn;A8_^U strOut=f.ReadAll ;^ O;Rq6f"g#}
htmlwrite.close l{ I7[}h8wwSn
#H Bv?KWw8b+Z%[;s s
strTitle="生成的网页标题" mgUH j0|@tHYg:F"Z
strC
\\ m$CB
i%_ O%[$cL '// 用真实内容替换模板中的标记 oG@%x5u)W}
strOut=Replace(strOut,"$title$",strTitle) 3etR1I$Z
strOut=Replace(strOut,"$body$",strContent)
0d7D1L` {?v,E F ? n#g8C&T?a
'// 创建要生成的静态页
\:X,?9v(KH Set htmlwrite=fso.CreateTextFile(Server.MapPath("test.htm"),true)
vuP#M(nO4N zj
'k/jX {Sn5q7L '// 写入网页内容 PM'o e c&M#bu
htmlwrite.WriteLine strOut
D oV!^ ^4j.KJ htmlwrite.close 1Sc VD+Msl

;]f ]0G"kiW Response.Write "生成静态页成功!" dETt.llql7G
Nak rJ~%x k
'// 释放文件系统对象
rE$b9Fa4U3X set htmlwrite=Nothing
]-VFC/qC set fso=Nothing W:I@ U.Gy*O
%> K6xC9b,^1j0W@

[e9S~r]1D 3,第三种方法就是用XMLHTTP获取动态页生成的HTML内容,再用ADODB.Stream或者Scripting.FileSystemObject保存成html文件。这句话是在蓝色理想上看到的,对XMLHTTP吟清还不熟悉正在找资料了解.找到一段XMLHTTP生成Html的代码参考一下.
J2GSz*]7Y3V4Y9M/d <% 3qAPw+G[a

#Sn8r/}0v7wQ%c3C '常用函数
a]p rm '1、输入url目标网页地址,返回值getHTTPPage是目标网页的html代码
IO_&n0}~ function getHTTPPage(url) 0{/Q%sb&e nhf d
dim Http
/hJ4iO+GJb set Http=server.createobject("MSXML2.XMLHTTP")
Q-mm)\8x @j Http.open "GET",url,false *c4i*[S8z R
Http.send() s&z3PT+wU
if Http.readystate<>4 then
k\#E4?!{b"s3P_O0P exit function ,F x5fL2X/T
end if GlBVjza&oz{
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
'~)l4a%?5w6L k4m set http=nothing ?\:}u:MT X
if err.number<>0 then err.Clear 7dTSH2\7B6o$ch
end function e/]E(kX%e#@{6bG
JTgaehr!S6^
'2、转换乱玛,直接用xmlhttp调用有中文字符的网页得到的将是乱玛,可以通过adodb.stream组件进行转换 T$k^/c(w
Function BytesToBstr(body,Cset)
6kB8s|d dim objstream
'i+@6M]pQG?B set objstream = Server.CreateObject("adodb.stream") A:p*s&|&h2c
objstream.Type = 1 F)O0z&iI5|W*z
objstream.Mode =3
r ^ w*^ l objstream.Open $fq)X{$h!N5I;@
objstream.Write body Y$} i ].A,qIk
objstream.Position = 0
m.g:oRAg%f1@*gu#s objstream.Type = 2
5p |0ZVMP6X| objstream.Charset = Cset 1z7F.R ] IJ$D
BytesToBstr = objstream.ReadText
Y NnO#AZ}1U#aB objstream.Close
cM L(Ot5u!iS2I set objstream = nothing 'TT8kE+kA
End Function 1}.C1A)H6z O |$~

2d'qB4iDa(z#[ 6|"b1lZ!Gv
txtURL=server.MapPath("../index.asp")
9X3{/F7XD
[O;`+{s sText = getHTTPPage(txtURL) n1Nvg R
;CQ\LJ&Q
Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
/EC-PW!X0o0W filename="../index.htm" M%z1ecX4I+L8J
Set openFile=FileObject.OpenTextfile(server.mapPath(filename),2,true) 'true为不存在自行建立 %V/M@rD'm(G `
openFile.writeline(sText) P5W)xXa3f
Set OpenFile=nothing
rF'sxz!Fv'f 0U!ul6_ }xr
%>
a"u/uu5h8gj ~ sS <script> 5@*}#|W)F:K x/@2`
alert("静态网页生成完毕");
%T w9sj P8xg history.back(); }O{*c R(h^P
</script>

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


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