分享
 
 
 

ASP+FSO+框架实现ASP生成htm并分页的方法(批量)

王朝asp·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

还是第一次在CSDN写文章,本人文采和理论知识有限,写得不正确的地方欢迎指正。其实网上已经有很多ASP生成htm的文章了

,有一种方法是ASP+XML的生成方法,虽然有一种好处就是不用程序写模版就可以直接引用原来的要生成页面源码使用,但

本人进行此方法测试时,发现其稳定性差和网速要求高(当然不是在服务器上了)。特别是虚拟空间上经常报错,有可能在本

人在此方法上代码处理不足的原因吧。长话短说,这篇文章使用大家常用的另一种方法ASP+FSO,这里还应用了框架就是为

了处理大量分页时减少生成时间使用的,这种方法是针对一些页面量较大的ASP文件。

这里我引用一个简单实例:(旅游电子商务)全国各大城市酒店应用静态页(htm)分页显示

1.应用系统环境:win2000+ASP+MSSQL/ACCESS(数据库基本没有关系了通用的)+iis5.0

2.1个城市列表(CityHtml):包括定义静态htm名称共三个字段(城市ID(自动编号),城市名称(CityName例如北京),生成htm前缀名(HtmlStartName例如beijing))

3.1个全国酒店列表(Hotel):这里我只建立三个字段(酒店ID(自动编号),城市名称(City),酒店名称(HotelName))方便来引用实例。

4.1个ASP页面(ToHtm.asp)(生成htm使用)

5.1个循环框架页面(IframeToHtm.asp),应用框架批量生成htm

以下给出两个页面的源码

循环框架进行批量生成的页面:IFrameToHtm.asp

<!--#include file="conn.asp"-->'连接数据库

<%

dim rs,sql,j

set rs=Server.CreateObject("adodb.recordset")

sql="select * from CityHtml"'打开全国城市列表

rs.open sql,conn,1,1

do until rs.eof'循环各大城市%>

<!--以下应用框架打开ToHtml生成页面-->

<IFRame name="LoadRcHtm<%=j%>" frameborder=0 width=100% height=30 scrolling=no src="ToHtml.asp?City=<%=cstr(rs("city"))%>&HtmlStartName=<%=rs("HtmlStart")%>"></IFrame>

<%rs.movenext

loop%>

生成程序页面:ToHtm.asp 我在源码大概写上注释**

<!--#include file="conn.asp"-->'数据连接文件

<%

On Error Resume Next'容错处理

Dim City'定义取得要生成页面的城市

City=Request.Querystring("City")'获取生成的城市酒店值从框架传过来的在后面将介绍

HtmlStartName=Request.Querystring("HtmlStartName")'获得生成htm文件名前缀

Dim sql'搜索字符串,这里我就直接打开表不用搜索变量了,搜索条件按自己写就可以

sql="select * from Hotel where [City] = '" & City & "' "

Dim oRs'数据操作对象

Dim PageCounts'实现分页生成必须得知呀有多少页

Set oRs = Server.CreateObject("ADODB.Recordset")

oRs.Open Sql,oConn,1,1'找开酒店等于City变量的表

oRs.pagesize=10'十个记录为一页

PageCounts=oRs.pagecount'得出要生成多少个页面,循环生成使用

Dim fs'定义fso文件对象

Dim folders'存放生成静态页的文件夹名称

Dim Filestart'定义生成htm文件前缀

Set fs=Server.CreateObject("Scripting.FileSystemObject")

Dim i

for i=1 to PageCounts'开始循环生成页面,也就是分页生成了

page=i

oRs.absolutepage=i'页码

rowcount=oRs.pagesize'当页记录数

folders=server.mappath("CityHtml")

if (fs.FolderExists(folders)) then'判断文件夹是否存在

else

fs.CreateFolder(folders)'不存在则创建CityHtml文件夹

end if

if i=1 then

Filestart=HtmlStartName'如果为第一页则定义文件名为传值名.例如beijing则为beijing.htm

else

Filestart=HtmlStartName&i'如果第二页则为beijing+1例如有两页也就是i等于2则为 beijing2.htm如此类推...(.htm后缀就在后面加上)

end if

Dim files'定义生成文本文件名称变量

Dim filez'定义文件路径名称变量

files=Filestart&".txt"'本文件名称

filez=folders&"\"&"files'文本文件路径

'册除文件

Dim checkfile'检查文本文件是否已经存在,是则删除

checkfile=server.mappath("CityHtml\"&Filestart&".htm")'检查htm文件是否已经存在,是则删除

if (fs.FileExists(checkfile)) then'检查htm文件是否已经存在,是则删除

Dim df'定义文件对象*删除文件使用*

Set df=fs.GetFile(checkfile)'定义要册除的文件

df.delete'册除文件

end if'判断结束

Dim ts'定义写入文件对象

set ts = fs.createtextfile(filez,true) '开启写入文件内容**我在正文只简单写入酒店名称和静态数字分页显示**

ts.write("<Html><Head><Title>生成"&City&"城市酒店</Title>"&vbcrlf)'之后就是要生成的正文件内容了跟使用Response.write

ts.write("<META http-equiv=Content-Type content=text/html; charset=gb2312>"&vbcrlf)

ts.write("<meta name=keywords content="&city&"酒店>"&vbcrlf)

ts.write("<link href='/Style/style.css' rel='stylesheet' type='text/css'></head><body topmargin=0>"&vbcrlf)

ts.Write("<TABLE WIDTH=760 cellspacing=0 cellpadding=0 align=center>"&vbcrlf&_

"<TR><TD width='100%'>"&vbcrlf)

'分页输出开始

'数字分页程序原理在这我就不多说了,不懂的朋友可在网上搜索一下

Dim page'当前页

Dim Page2'数字分页变量

Dim s'数字分页变量

if page=1 then

ts.write (" [首 页] [前一页] ")

else

ts.write (" <a href="&HtmlStartName&".htm"&" class=blue>[首 页]</a> <a href="&HtmlStartName&Replace(page-1,1,"")&".htm"&" class=blue>前一页</a> ")

end if

page2=(page-(page mod 10))/10

if page2<1 then page2=0

for s=page2*10-1 to page2*10+10

if s>0 then

if s=cint(page) then

ts.write (" <font color='#000000'>["& s & "]</font>")

else

if s=1 then

ts.write (" <a href="&HtmlStartName&replace(s,1,"")&".htm"&" class=blue>["& s &"]</a>")

else

ts.write (" <a href="&HtmlStartName&s&".htm"&" class=blue>["& s &"]</a>")

end if

end if

if s=ors.pagecount then

exit for

end if

end if

next

if cint(page)=ors.pagecount then

ts.write (" [后一页] [尾 页]")

else

ts.write (" <a href="&HtmlStartName&page+1&".htm"&" class=blue>[后一页]</a> <a href="&HtmlStartName&ors.pagecount&".htm"&" class=blue>[尾 页]</a>")

end if

ts.write("</TD></TR>")

'分页输出结束

do while not ors.eof and rowcount>0 '输出酒店名称

ts.write("<TR><TD width='100%'>"&oRs.Fields("Chinese_Name")&"</TD></TR>"&vbcrlf)

oRs.movenext

rowcount=rowcount-1'当页记录数-1

loop

ts.write("</Table></body></html>"&vbcrlf)

ts.close

set ts=nothing '释放对象

Dim EditFile'定义改写文件变量

Set EditFile = fs.GetFile(filez)'设置改写文件对象

EditFile.name= left(EditFile.name,len(EditFile.name)-4)&".htm" '改写文本文件成htm

next'循环生成结束(分页生成)

set EditFile=nothing '释放对象

set fs=nothing'释放对象

if err.number<>0 then '处理生成错误

Response.write(City&"更新时发生未知错误<A href=ToHtml.asp?City="&City&"&HtmlName="&HtmlStartName&">重新更新</A>")

else

Response.Write(City&"酒店更新已完成 "&Now())

end if

%>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有