捌玖网络工作室's Archiver

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

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

网页生成静态Html文件有许多好处,比如生成html网页有利于被搜索引擎收录,不仅被收录的快还收录的全.前台脱离了数据访问,减轻对数据库访问的压力,加快网页打开速度. TR*@'?e
像[url]www.aspid.cn[/url]的主站就采用了TSYS生成html文件! .H1\6cX'nd }ytg`S
所以吟清最近对生成html比较感兴趣,看了不少文章,也有一点点收获.
M.zp}U
,|,B?P RIW k 1,下面这个例子直接利用FSO把html代码写入到文件中然后生成.html格式的文件 <%
qa3tpssxB filename="test.htm"
.n C-bP;G*OQ?J-{ if request("body")<>"" then "Z7p(s!\*f
set fso = Server.CreateObject("Scripting.FileSystemObject")
5Vh ]V_2q set htmlwrite = fso.CreateTextFile(server.mappath(""&filename&""))
~ [*D wQ0e%c3I htmlwrite.write "<html><head><title>" & request.form("title") & "</title></head>"
(k_7F,wIc htmlwrite.write "<body>输出Title内容: " & request.form("title") & "<br /> 输出Body内容:" & request.form("body")& "</body></html>" dC L7n Dc Ue#o
htmlwrite.close *d$L"Lh wA D"|)a
set fout=nothing lKNWo2a"]
set fso=nothing z'Z^;K4y*Qo)G
end if Yy+U7K6S6w;[6m
%>
Q}jOg <form name="form" method="post" action=""> U(i9jl%A@o.CK
<input name="title" value="Title" size=26> T#l'ugz/[4t
<br> 7IYM4A!q0F?8n6C2?
<textarea name="body">Body</textarea>
HRpy)g <br>
u5uGivtczT <br> ;w&rF^/xP
<input type="submit" name="Submit" value="生成html">
N j@.\,~ </form>
DX&rG O}"Cx 2,但是按照上面的方法生成html文件非常不方便,第二种方法就是利用模板技术,将模板中特殊代码的值替换为从表单或是数据库字段中接受过来的值,完成模板功能;将最终替换过的所有模板代码生成HTML文件.这种技术采用得比较多,大部分的CMS都是使用这类方法.
r ?`H xf6A|9WX template.htm ' //模板文件 <html> aFQ%b#\oM n{#t
<head> B9s9G,d$j2K
<title>$title$ by aspid.cn</title>
E8N7Q8E#x </head> ^ B1c+{2r^3{2C
<body> 0yUkyh
$body$
^'BA*VF{2g-x-l </body> !y c7uzZ.IE0TX9S1G
</html> ? O;mA-d-d&bz

E-cto"B`%V B TestTemplate.asp '// 生成Html <%
n%p b6k ^o8v3{_ Dim fso,htmlwrite
sC2l@h:g9xO Dim strTitle,strContent,strOut H,?K4Q\$P
'// 创建文件系统对象
oV\M `"h+Zh-~7N Set fso=Server.CreateObject("Scripting.FileSystemObject") `8Fnef3|zB V
'// 打开网页模板文件,读取模板内容 Q:\6O;q)a"d#s#{ R
Set htmlwrite=fso.OpenTextFile(Server.MapPath("Template.htm")) k$d6[%lUC]Z/?
strOut=f.ReadAll
1T r~MaK htmlwrite.close pJF@2?Sd
N^cs"M`&S
strTitle="生成的网页标题"
"t,b)^Wr] strC
j;B!@iY /h1f7c\8W!mp/M
'// 用真实内容替换模板中的标记
] T9u#Yy9LG strOut=Replace(strOut,"$title$",strTitle) 6w0Y&WzH.~0C
strOut=Replace(strOut,"$body$",strContent)
9u!Aj u#L&Y$Q,J:t
&K(w;y;Hc*J qNE '// 创建要生成的静态页
;@ K Ew%YZz/~ Set htmlwrite=fso.CreateTextFile(Server.MapPath("test.htm"),true)
(j)t"Q:Xb c}x 2} @t]b
'// 写入网页内容
Q_ { P-Bn htmlwrite.WriteLine strOut u2~8bM+j^3i8G:_H
htmlwrite.close
sYYU8D(Zk+wd)C
c @a6H;`1](K0Jg Response.Write "生成静态页成功!"
0y m|zdJ)Vo_ !o[ ^*M9L*I'CPE
'// 释放文件系统对象 8a2x6I7Ss U3}R
set htmlwrite=Nothing GT"J%Cr*Mw{
set fso=Nothing 2@%Kn+S)J(L9kn7Q8\ Q
%> &U| @ }RJ7S'T
3_0M \y;q%\CX%M@x
3,第三种方法就是用XMLHTTP获取动态页生成的HTML内容,再用ADODB.Stream或者Scripting.FileSystemObject保存成html文件。这句话是在蓝色理想上看到的,对XMLHTTP吟清还不熟悉正在找资料了解.找到一段XMLHTTP生成Html的代码参考一下.
.Z*~`9B#VP$BW3W <% *Jl8p k?7B3S
:wB#l8x#b] ~g^
'常用函数 'h1R8~$a|
'1、输入url目标网页地址,返回值getHTTPPage是目标网页的html代码 1eAw_9OZ
function getHTTPPage(url) )^;a2MI(?l+D
dim Http a/m2?Sk|Z1N
set Http=server.createobject("MSXML2.XMLHTTP") [G6}!_.XRL6m
Http.open "GET",url,false
^ J6AX(v#nT4` Http.send()
7mi'E:k!r0@ |9cI oc#~ if Http.readystate<>4 then
._;H0j9a&Wk U5P1?w exit function
8J{,DVpA;W!Y0J end if
i9[v4}9YXl getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
0rJ?U4ib| set http=nothing
itHss3E{ if err.number<>0 then err.Clear
H2v$jp.wp,MM6H| end function
/M0t$d'UE/VJ[ !NC y6M2Z0|fl&O D
'2、转换乱玛,直接用xmlhttp调用有中文字符的网页得到的将是乱玛,可以通过adodb.stream组件进行转换 F p4diN3nZZB+d
Function BytesToBstr(body,Cset) .t Aa S]b]{*]
dim objstream
ocY] P)o set objstream = Server.CreateObject("adodb.stream")
\W;^Kp{]Y3r@H objstream.Type = 1 (JDbM _:v
objstream.Mode =3
m| m5nw a-?L[7rX objstream.Open d$gyP9vxZzG
objstream.Write body
Arc&J*f7c~5j"Q objstream.Position = 0
/}~i%OD h\ objstream.Type = 2
y(Ig*l4\0c!~9z objstream.Charset = Cset
,ICx-Ec U BytesToBstr = objstream.ReadText uK1Kcp"T"XIg
objstream.Close o&r&s i(}"yG T
set objstream = nothing &Fj#D%Xed
End Function
JW"{,i$r-j7t8hw3@ 7U+I+_%?m/Q
"wd U-L7m'~1K.h-F1I1q
txtURL=server.MapPath("../index.asp") Y~XD%P f y

E!jqsh'j i{ sText = getHTTPPage(txtURL)
W \9Sy%`uL%S
wI%g @C Set FileObject=Server.CreateObject("Scripting.FileSystemObject") A:FE4L/E)q
filename="../index.htm" O H)pJ$z jTQ;s
Set openFile=FileObject.OpenTextfile(server.mapPath(filename),2,true) 'true为不存在自行建立 | w_IVW
openFile.writeline(sText)
-W_4h#AdKJ Set OpenFile=nothing
H8b*Mw0W ]#K (A/b5|0Vl1E;c
%>
q%[:z [S0e(nSz <script> )V+I){C5r!EN/Mh
alert("静态网页生成完毕"); )`zz Kd4c"J
history.back(); riS2\p7xk[
</script>

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


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