捌玖网络工作室's Archiver

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

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

网页生成静态Html文件有许多好处,比如生成html网页有利于被搜索引擎收录,不仅被收录的快还收录的全.前台脱离了数据访问,减轻对数据库访问的压力,加快网页打开速度.
J8\JfT 像[url]www.aspid.cn[/url]的主站就采用了TSYS生成html文件! [P!A,d#Mi"c
所以吟清最近对生成html比较感兴趣,看了不少文章,也有一点点收获.
Q ]$D%R QqHtd@
6tW*V q @[%E Q*V_ 1,下面这个例子直接利用FSO把html代码写入到文件中然后生成.html格式的文件 <%
;L0n0mL_ s@ filename="test.htm"
K3Z8hjGW if request("body")<>"" then
FCmx X8U7Z set fso = Server.CreateObject("Scripting.FileSystemObject")
,cX2d_"w y @ set htmlwrite = fso.CreateTextFile(server.mappath(""&filename&""))
v0A k X)n"HG.u htmlwrite.write "<html><head><title>" & request.form("title") & "</title></head>" 0p~:P8xAoWS0{
htmlwrite.write "<body>输出Title内容: " & request.form("title") & "<br /> 输出Body内容:" & request.form("body")& "</body></html>" 'Ua hQ9s T+j!A9M0{
htmlwrite.close
"\,Wa&q)p set fout=nothing
|\P#v4C GNV{ set fso=nothing
(I*\rye"dLH:S3dEn$\ end if ]| {?1_O8K/N
%>
`4ghBU?w;^ <form name="form" method="post" action=""> .X%PP0b_wx
<input name="title" value="Title" size=26>
t1~&}R Du <br>
K(Xpb i` <textarea name="body">Body</textarea> Z"`z A0S,b6U Sy
<br>
3y j n*UIc3L <br>
9w.Q.`:D5r8ON <input type="submit" name="Submit" value="生成html"> U8Ls/zJWs
</form> i8v'[ ~za&KbQ \
2,但是按照上面的方法生成html文件非常不方便,第二种方法就是利用模板技术,将模板中特殊代码的值替换为从表单或是数据库字段中接受过来的值,完成模板功能;将最终替换过的所有模板代码生成HTML文件.这种技术采用得比较多,大部分的CMS都是使用这类方法. /P0vBI4l,X
template.htm ' //模板文件 <html>
c&|C8w;~O <head> B _N]/t`.n
<title>$title$ by aspid.cn</title> |oR*P,y-Q`D'B
</head>
g o;f'A;El#zn/k _d <body> :tq^J&\ T4J
$body$
2~&r gV| mw1tV </body>
KK2DV*s j'IO </html> ? (@0CiH3n7BK
&S)\%]IY0F8J6N
TestTemplate.asp '// 生成Html <% x1er'O-`
Dim fso,htmlwrite
:z}+kz7gS}J2U8d| Dim strTitle,strContent,strOut
:F},R#ukf$U '// 创建文件系统对象 1Sq.h'\ V5M2p
Set fso=Server.CreateObject("Scripting.FileSystemObject")
:T5N#h"`4Ra '// 打开网页模板文件,读取模板内容 V*t9o*xz!o"X^"?
Set htmlwrite=fso.OpenTextFile(Server.MapPath("Template.htm")) !Xj7{ nq%K)HHb
strOut=f.ReadAll `u'sP3{9zp
htmlwrite.close _H]^@5r5lD)D
On k'O;U1mZxF
strTitle="生成的网页标题"
XY/c"WD{0V3FwjL strC
eqi}0F+q8U
!K~ ~F0o7b3Uub'\ '// 用真实内容替换模板中的标记 }5ue(d,ik&e K
strOut=Replace(strOut,"$title$",strTitle) 7Y7r3Q@#r(m t9S6B
strOut=Replace(strOut,"$body$",strContent)
OI;|S2`u k `0|H xz
'// 创建要生成的静态页 &o&EP&G.?Q!U)I2w!f
Set htmlwrite=fso.CreateTextFile(Server.MapPath("test.htm"),true)
NLPh L4x{:m%[!y
N3UQ3d+fJ '// 写入网页内容 O V(l`F0Baf
htmlwrite.WriteLine strOut B4\$j3pBD&Fz;W
htmlwrite.close
OI'zC4t&j1T
.h6F,F'l-v^P f Response.Write "生成静态页成功!"
*Ke~b@9e (pF0`GsfB-c#S6l[
'// 释放文件系统对象 -j.YP:Z0Wo8D
set htmlwrite=Nothing m^C-lJ
set fso=Nothing O2~a'H-Z't6|
%>
%w*i gE)HPyU8w#N I*x-G,~&B
3,第三种方法就是用XMLHTTP获取动态页生成的HTML内容,再用ADODB.Stream或者Scripting.FileSystemObject保存成html文件。这句话是在蓝色理想上看到的,对XMLHTTP吟清还不熟悉正在找资料了解.找到一段XMLHTTP生成Html的代码参考一下. A2`D.i+V(S
<%
^ s:u(|FW8Io
8[6C}j&`1ky6Xt '常用函数
\LjR1JI:an '1、输入url目标网页地址,返回值getHTTPPage是目标网页的html代码
L-J1qH@ g function getHTTPPage(url) S2\j[az4NQ
dim Http 8{ ?%od yQ'p
set Http=server.createobject("MSXML2.XMLHTTP")
d_*L:@lpm Http.open "GET",url,false ZkV,b+w%V7f(hk D!v
Http.send() /p'ik-F*i({j
if Http.readystate<>4 then
6OH%d,t*U0@2\*^L1{ exit function 'O1_:Zsn9ibPKyb
end if
N"U o#[z9Z w getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312") 4j^[4Im*E
set http=nothing
l;qL}h Y _ ]8k if err.number<>0 then err.Clear adNI8ieo }
end function _YXw(gL3H

Hu,Y RKp6v~cq '2、转换乱玛,直接用xmlhttp调用有中文字符的网页得到的将是乱玛,可以通过adodb.stream组件进行转换 I8m0O.hK:o0k
Function BytesToBstr(body,Cset) 6LDbr;B
dim objstream
M }AJWV0S set objstream = Server.CreateObject("adodb.stream") Q4h)k#k7L+Q
objstream.Type = 1 &xmB3rq wHj
objstream.Mode =3
h*S~x%l+W*P k objstream.Open
+zZq](m y S6I objstream.Write body Vx_wm e!n
objstream.Position = 0 ej4F/f z2yV:E
objstream.Type = 2 j\6Dj9V+{Y
objstream.Charset = Cset
%Q#q {LdJ BytesToBstr = objstream.ReadText *WPx(?K.I
objstream.Close so C&d(` I d [;_,g
set objstream = nothing
rX`` g End Function lwa%Xc"u'Z)U
m#G?s]v&X,~:s U5k

-m@?i;^7n| txtURL=server.MapPath("../index.asp") R/YX`*N-oe2L

$w'H ^/W:f] B_&|-y } sText = getHTTPPage(txtURL) R*N-lSR

? jT!@1c;w,a t Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
9wZA g;T9t filename="../index.htm" 1uHV CeEP{h
Set openFile=FileObject.OpenTextfile(server.mapPath(filename),2,true) 'true为不存在自行建立 1H+ed qF3mW'\
openFile.writeline(sText) @~N3PnI
Set OpenFile=nothing #Hgrs9~!D~1rN

I~bd1h(?.OD %> ]T LA1n6[
<script> xrq'e*h,w$k*w
alert("静态网页生成完毕");
&GNs0CH'`]S history.back(); q~ ON0^Nh
</script>

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


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