捌玖网络工作室's Archiver

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

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

网页生成静态Html文件有许多好处,比如生成html网页有利于被搜索引擎收录,不仅被收录的快还收录的全.前台脱离了数据访问,减轻对数据库访问的压力,加快网页打开速度.
czH d.s P.c4z w 像[url]www.aspid.cn[/url]的主站就采用了TSYS生成html文件! KMG _(}0yI-k
所以吟清最近对生成html比较感兴趣,看了不少文章,也有一点点收获.
MO9o El&mN u.V~yRj1~
1,下面这个例子直接利用FSO把html代码写入到文件中然后生成.html格式的文件 <% F@G lv1`
filename="test.htm"
x#IvQ%aWz if request("body")<>"" then 3Lxh$uF*e'|mx8yy
set fso = Server.CreateObject("Scripting.FileSystemObject")
sAj;k3~+mS%No set htmlwrite = fso.CreateTextFile(server.mappath(""&filename&""))
3qKu&h!x,OeG htmlwrite.write "<html><head><title>" & request.form("title") & "</title></head>"
%zQ/n]%a @hk htmlwrite.write "<body>输出Title内容: " & request.form("title") & "<br /> 输出Body内容:" & request.form("body")& "</body></html>"
@Z/Q~Vdk htmlwrite.close
s#tm9[7Hx!Z set fout=nothing +n,yK3LQ J1mY]
set fso=nothing yK ^3k V1z%Mk DT6s
end if '[+]fYY#Ul
%>
.P*I/S-g ~t4v <form name="form" method="post" action=""> )m,c`9i \F:iS;[
<input name="title" value="Title" size=26> 'i-ze8})T!U0?/Hx
<br>
Rj M)P(a"]Q <textarea name="body">Body</textarea>
x e,_|vN <br>
+s"w%` {+DZp o Pg j <br> k*z%B-BU6lRnk)|
<input type="submit" name="Submit" value="生成html">
a-LJ`2H s$x#c </form>
S^!P'Y({#Y 2,但是按照上面的方法生成html文件非常不方便,第二种方法就是利用模板技术,将模板中特殊代码的值替换为从表单或是数据库字段中接受过来的值,完成模板功能;将最终替换过的所有模板代码生成HTML文件.这种技术采用得比较多,大部分的CMS都是使用这类方法. Y2X;n2@.PbF1y
template.htm ' //模板文件 <html> tar5[}
<head> U[AhW ub;~
<title>$title$ by aspid.cn</title> 'E+zx+ju
</head> `'aFtQMA$|
<body>
Pp~(i#v Q([ $body$ )O-KP]+RQ
</body> G:to zDu0h
</html> ? )?)fUD9@,g
~|XdJ*B\
TestTemplate.asp '// 生成Html <%
l(i G*Sy!Qq*X Dim fso,htmlwrite
/qX%L T!Qt Dim strTitle,strContent,strOut
"A%q7jDg@ Q fl '// 创建文件系统对象 R*wr6J!mh#R x
Set fso=Server.CreateObject("Scripting.FileSystemObject") 'TY-x-^*P;Dg$K
'// 打开网页模板文件,读取模板内容
5Y.C$Z [ tb~x Set htmlwrite=fso.OpenTextFile(Server.MapPath("Template.htm"))
1an$x"P4[.U K9Y _ strOut=f.ReadAll
\qI |X]y1[,R htmlwrite.close
M*ky_"wWVh Smu-WhxJfeY,o
strTitle="生成的网页标题" v)p"_&D5W}Q/\#~ZD.@ e
strC
XvF%|MR|
8TNI g3Od/[K[ '// 用真实内容替换模板中的标记 DHg)Q T'y
strOut=Replace(strOut,"$title$",strTitle) /OI7j1u&x*aq
strOut=Replace(strOut,"$body$",strContent)
UrS+]{9]D^Qu U3}5p"h5|3C%v'Ye#}"D
'// 创建要生成的静态页
(i!|SdmvWU.G Set htmlwrite=fso.CreateTextFile(Server.MapPath("test.htm"),true)
ebk9vp s W"p%P%itD Dz
'// 写入网页内容 E CDB elP*?*P
htmlwrite.WriteLine strOut
b bOk%L Y qnE htmlwrite.close
%MF3d'Q;F:?7X
|A T babIl Response.Write "生成静态页成功!"
%`Ggx]3E%\/L
.|)gy(H6s#viy#O6DgS;H '// 释放文件系统对象
:ghL? AO,P set htmlwrite=Nothing s9|1nN%]@8`)A*f
set fso=Nothing
:_0y?*nSW %>
aD5ia]K
D#{4Pn A/] U7z*J h 3,第三种方法就是用XMLHTTP获取动态页生成的HTML内容,再用ADODB.Stream或者Scripting.FileSystemObject保存成html文件。这句话是在蓝色理想上看到的,对XMLHTTP吟清还不熟悉正在找资料了解.找到一段XMLHTTP生成Html的代码参考一下.
d8^0~)Pc3`9s*C <% ,C3C c/aTQs

:q@0{1d*I$o3o?8r,Q Z '常用函数 q1_b G%Jbn
'1、输入url目标网页地址,返回值getHTTPPage是目标网页的html代码 ;Cl*d0L(hPZ%y:_ m
function getHTTPPage(url) F3ixVW8R cTWX
dim Http :x!nA;Q ?-\"c
set Http=server.createobject("MSXML2.XMLHTTP") 6V1j0WcdBw
Http.open "GET",url,false
9m%uI6KL1XG{ Http.send() 5tTqAln[:N`[
if Http.readystate<>4 then L7bj1k+xUF
exit function e/YM$b&q5r
end if T|+i#hvFM
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312") Z!y `'J+dpP
set http=nothing {'UDv@3up-N ]#U
if err.number<>0 then err.Clear
0RX{j4_:C*vk'f7C N end function Q*Lqh6?

h OIt,qRi '2、转换乱玛,直接用xmlhttp调用有中文字符的网页得到的将是乱玛,可以通过adodb.stream组件进行转换
*G'R?"~Nq){ v9cq Function BytesToBstr(body,Cset) tI `5p(s
dim objstream S+KsY(|s
set objstream = Server.CreateObject("adodb.stream")
Q nI{4K^#x%L objstream.Type = 1 cff H(sd#U.U
objstream.Mode =3
b|3Uu'B%x objstream.Open
@N6|0s J'n}m objstream.Write body
^+Ay!aiN H objstream.Position = 0
t#bMs9an objstream.Type = 2
p"n,iP;_Py objstream.Charset = Cset a6Zud~l#sF{
BytesToBstr = objstream.ReadText F%{ Z;j,[%h7p7A7n
objstream.Close @]+I+z&u!WSK
set objstream = nothing
f1K4I,u,t*o End Function 4e\Ag0f#r%\%\(vw
3Y9Kc)b+s d

W"pW#N^? B3|^6? a&~ txtURL=server.MapPath("../index.asp") J4d&r f9A8v;oR

T0yDS(d7B0m,[,N!{ sText = getHTTPPage(txtURL) T/~"joT0`#RV
9O6Z+p!dX6w5b!Qg-p
Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
a,n^ b!u+ncM M filename="../index.htm"
A;lT&@/R7T Set openFile=FileObject.OpenTextfile(server.mapPath(filename),2,true) 'true为不存在自行建立
_4SI#Dq openFile.writeline(sText)
3[!d j&g!EZG4r Set OpenFile=nothing :\?y1q|FJ X

+X&?U8NH %> ,cV3C},Fh7H$s|,T.p
<script> Q4O ]'k5R!`5U @2q
alert("静态网页生成完毕");
%OMVy:gk5O history.back(); V8v)Xp] [A0A
</script>

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


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