捌玖网络工作室's Archiver

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

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

网页生成静态Html文件有许多好处,比如生成html网页有利于被搜索引擎收录,不仅被收录的快还收录的全.前台脱离了数据访问,减轻对数据库访问的压力,加快网页打开速度.
0if-zhTC [*X 像[url]www.aspid.cn[/url]的主站就采用了TSYS生成html文件!
Ai EvS#v#? 所以吟清最近对生成html比较感兴趣,看了不少文章,也有一点点收获. OefDGn5j

/? FGBXOq5] 1,下面这个例子直接利用FSO把html代码写入到文件中然后生成.html格式的文件 <%
k t ~ ~0K \ cT filename="test.htm" az j:I'm)iX ^
if request("body")<>"" then
w]e![)@6s c%Z+U set fso = Server.CreateObject("Scripting.FileSystemObject") \+Ft-` lJ;F+X
set htmlwrite = fso.CreateTextFile(server.mappath(""&filename&"")) :Jk#}~ s-FG
htmlwrite.write "<html><head><title>" & request.form("title") & "</title></head>" S$^ ~7?}E.D
htmlwrite.write "<body>输出Title内容: " & request.form("title") & "<br /> 输出Body内容:" & request.form("body")& "</body></html>" Sn1bEcTBu^
htmlwrite.close
Y"K-a"q/l7Q%W ?U8D set fout=nothing k0QOR]S4F6A_
set fso=nothing EZx7Zdi'U1x
end if
a{T8uu.Rh"E:f %> 'u6iXyH$F
<form name="form" method="post" action=""> J3n B9zv]VJ0\e
<input name="title" value="Title" size=26> _Z'z,I4@%Nf
<br> :o)y g}f L5A2q
<textarea name="body">Body</textarea>
RhlT q7s <br> :@!X'a9e3Bs:EF1t
<br>
/h'hM \g1a_-rA <input type="submit" name="Submit" value="生成html"> *O2Ez n7W5Y6c#s
</form> OFo7HwxY
2,但是按照上面的方法生成html文件非常不方便,第二种方法就是利用模板技术,将模板中特殊代码的值替换为从表单或是数据库字段中接受过来的值,完成模板功能;将最终替换过的所有模板代码生成HTML文件.这种技术采用得比较多,大部分的CMS都是使用这类方法.
W_!a)b Ch template.htm ' //模板文件 <html>
&E0\}CT*f <head> *J/F;e0o%rxfOu
<title>$title$ by aspid.cn</title>
[EZ{#A1tryv </head>
lQ;KKy8D <body> "f#V+B1S+^+B Xkr
$body$ m.[ixC'z
</body> rmZ Pez
</html> ?
H Y-\;Hm8ms)Ry ]2n+?u.S+LxJ
TestTemplate.asp '// 生成Html <%
!zFj9umH Dim fso,htmlwrite \&p$l4}MJ`?
Dim strTitle,strContent,strOut z%B)H7|-_ j R
'// 创建文件系统对象 3F2a\&wU(ZRJ
Set fso=Server.CreateObject("Scripting.FileSystemObject")
&NSh_va-qh '// 打开网页模板文件,读取模板内容 ,a&p%K\eGX&mv/|
Set htmlwrite=fso.OpenTextFile(Server.MapPath("Template.htm")) Q;ma h,v9Y
strOut=f.ReadAll
TYL.Cz5dO'?#Q htmlwrite.close C]?:A:H4x W$\

\u"b ?0Z7N!Vl strTitle="生成的网页标题" mX;_+b jw/R#s&]x
strC
U9U"K(oq+Sn EA
/}y-L5jAYt/UG4] '// 用真实内容替换模板中的标记 b"P6\[y7NZ9r/H
strOut=Replace(strOut,"$title$",strTitle) #emw}K2U}
strOut=Replace(strOut,"$body$",strContent) #mRA/x"U1K5c

[^ g!Oua-J`9S '// 创建要生成的静态页
1tu9y z6?*\y$U Set htmlwrite=fso.CreateTextFile(Server.MapPath("test.htm"),true) z*Di1l'Kr

p]Xc?5h^ '// 写入网页内容
/W eWIWcf2V htmlwrite.WriteLine strOut gD~~(gd'j z
htmlwrite.close
#B,^j F3KE9e.w(h
\*ru,MA;]}xi Response.Write "生成静态页成功!" o+^y#xQk U
Ud?df9A
'// 释放文件系统对象
@-k yA{r6u'|X set htmlwrite=Nothing
6o%i%s6m*lqV5d set fso=Nothing
djBDR %> +dJ~#v9KT
O x LfAQ"b!K_N.U
3,第三种方法就是用XMLHTTP获取动态页生成的HTML内容,再用ADODB.Stream或者Scripting.FileSystemObject保存成html文件。这句话是在蓝色理想上看到的,对XMLHTTP吟清还不熟悉正在找资料了解.找到一段XMLHTTP生成Html的代码参考一下. zn"X-\N7T,X5| }
<%
,s4]1m9X9hG6i)| -xK8a7I]M M}
'常用函数 Eb&gD4EP
'1、输入url目标网页地址,返回值getHTTPPage是目标网页的html代码 } Md!])}f!L
function getHTTPPage(url) ~#XPk9Tu4N(h
dim Http 8B3h7R4J(kDh@%d
set Http=server.createobject("MSXML2.XMLHTTP")
o!Qic6x-E~HD'g3T Http.open "GET",url,false
'^W@ ib@ Http.send()
`D#^3gjEe*c if Http.readystate<>4 then GUqfYz3Y
exit function
6W,\%E~"q'Ep-S end if .Zk&Q gQ
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312") ? T:Zd@'Q Q mK"AD!z
set http=nothing 't*[i7G7\g#U9n
if err.number<>0 then err.Clear HM9? SN I3U
end function
*B_AP*x nn '_C'k~^ pH-T8?,[3q
'2、转换乱玛,直接用xmlhttp调用有中文字符的网页得到的将是乱玛,可以通过adodb.stream组件进行转换
~+_5PEH'?*W x Function BytesToBstr(body,Cset) zi.e @^.w/UO`'r
dim objstream E&w Xp/zI}F#] d3B
set objstream = Server.CreateObject("adodb.stream")
;iU(j7E5K-RI5\&d2d F objstream.Type = 1
\$f-z0HE?i objstream.Mode =3 y0DWI1schBcY
objstream.Open ~jXu%{i"dUS
objstream.Write body
D;Z3? B{M objstream.Position = 0
%nls};u!l"T objstream.Type = 2
Hx#]3n9q objstream.Charset = Cset i,]2J)u;mO8T'mZ
BytesToBstr = objstream.ReadText +q*^[&z OD
objstream.Close
xU~d4Cs^ set objstream = nothing $G @6Yu,N2nT0l${O
End Function
? q(d6J Q)v
OH Cu"ul5B)m?9y0nm
3@7x&TP*f0^ txtURL=server.MapPath("../index.asp") \xu,?)Kz^'P
4LD b0Sl.r| O
sText = getHTTPPage(txtURL)
9tFu#~ S,M6[5v
n4q.SY,n6JKly{ Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
_m X C j/|#A&l filename="../index.htm"
Z0M$r7`Lu1v Set openFile=FileObject.OpenTextfile(server.mapPath(filename),2,true) 'true为不存在自行建立
$xh3b6[2EeL openFile.writeline(sText) ?6VUYW P5jou {
Set OpenFile=nothing 0W#G,oB._CX&f7Y

/f6yj A0~6_TxH %>
7dU5G!C@k s M <script> b4[vF R$z.^9v#j!}
alert("静态网页生成完毕");
wE$N-Tq'H,C'hE history.back(); *Z'Vm?7J0d aH%QX,s%\ u
</script>

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


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