
ASP生成静态页面问题
有时候生成的静态页面是对的能更新数据,有时候又不行(能生成但好像没覆盖原来的HTML文件)隔断时间又能生成正确的页面了。都被这问题搞晕了。请高人指点代码如下:<%ifre...
有时候生成的静态页面是对的能更新数据,有时候又不行(能生成但好像没覆盖原来的HTML文件)隔断时间又能生成正确的页面了。
都被这问题搞晕了。请高人指点
代码如下:
<%
if request("asp_html")="asp_html" then
Dim FileName,UrlPath
dim ASPArray,HTMLArray
ASPArray=Array("http://localhost:8080/index.asp","http://localhost:8080/lyindex.asp?type=sc","http://localhost:8080/jzg.asp?type=九寨沟","http://localhost:8080/jzg.asp?type=海螺沟","http://localhost:8080/lyindex.asp?type=gn","http://localhost:8080/lyindex.asp?type=jw","")
HTMLArray=Array("../index.html","../scindex.html","../qzindex.html","../hlindex.html","../gnindex.html","../jwindex.html")
for i=0 to 5
FileName=""&HTMLArray(i)&"" '要生成的文件路径及地址
UrlPath =""&ASPArray(i)&""
Call SaveToFile(FileName,GetTheHTMLCode(UrlPath))
Response.write UrlPath&" ==> "&FileName&".........已生成<br>"
next
'用XMLHTTP得到源码
Function GetTheHTMLCode(Url)
Dim Http
Set Http=server.createobject("MSXML2.XMLHTTP")
Http.open "GET",Url ,false
Http.send()
If Http.readystate<>4 then
Exit Function
End if
GetTheHTMLCode = BytesToBSTR(Http.responseBody,"GB2312")
Set Http=nothing
End Function
'中文乱码处理
Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
'保存文件
Sub SaveToFile(FilePath,FileContent)
Dim Fso ,File
Set Fso = Server.CreateObject("Scripting.FileSystemObject")
Set File = Fso.createTextFile(Server.Mappath(FilePath))
File.Write (FileContent)
File.Close
Set File=Nothing
Set Fso=Nothing
End Sub
else
%>
<input type="button" value="生成主栏目" onclick="window.location.href='asp_html.asp?asp_html=asp_html';">
<%
end if
%> 展开
都被这问题搞晕了。请高人指点
代码如下:
<%
if request("asp_html")="asp_html" then
Dim FileName,UrlPath
dim ASPArray,HTMLArray
ASPArray=Array("http://localhost:8080/index.asp","http://localhost:8080/lyindex.asp?type=sc","http://localhost:8080/jzg.asp?type=九寨沟","http://localhost:8080/jzg.asp?type=海螺沟","http://localhost:8080/lyindex.asp?type=gn","http://localhost:8080/lyindex.asp?type=jw","")
HTMLArray=Array("../index.html","../scindex.html","../qzindex.html","../hlindex.html","../gnindex.html","../jwindex.html")
for i=0 to 5
FileName=""&HTMLArray(i)&"" '要生成的文件路径及地址
UrlPath =""&ASPArray(i)&""
Call SaveToFile(FileName,GetTheHTMLCode(UrlPath))
Response.write UrlPath&" ==> "&FileName&".........已生成<br>"
next
'用XMLHTTP得到源码
Function GetTheHTMLCode(Url)
Dim Http
Set Http=server.createobject("MSXML2.XMLHTTP")
Http.open "GET",Url ,false
Http.send()
If Http.readystate<>4 then
Exit Function
End if
GetTheHTMLCode = BytesToBSTR(Http.responseBody,"GB2312")
Set Http=nothing
End Function
'中文乱码处理
Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
'保存文件
Sub SaveToFile(FilePath,FileContent)
Dim Fso ,File
Set Fso = Server.CreateObject("Scripting.FileSystemObject")
Set File = Fso.createTextFile(Server.Mappath(FilePath))
File.Write (FileContent)
File.Close
Set File=Nothing
Set Fso=Nothing
End Sub
else
%>
<input type="button" value="生成主栏目" onclick="window.location.href='asp_html.asp?asp_html=asp_html';">
<%
end if
%> 展开
3个回答
展开全部
将动态页面转换生成静态Html文件有许多好处,比如生成html网页有利于被搜索引擎收录(特别是对接受动态参数的页面)。前台访问时,脱离了数据访问,减轻对数据库访问的压力,加快网页打开速度。
当然,凡事有利必有弊,生成HTML页面无形中也耗费大量的磁盘空间以存放这些静态文件,在编辑页面过程中除读写数据库外,也要读写服务器磁盘,页面样式的改动必须重新生成全部HTML文件,等等。
像很多搜索引擎,都可以提交网站的页面地址列表,动态文件的收录问题已经不算是个问题了(如google sitemap)。得失就要自己衡量把握了,但无论如何,我们还是要懂得如何操作的。这里就引用一下别人的文章说明几种常见的生成思路,供大家参考参考。
1、下面这个例子直接利用FSO把html代码写入到文件中然后生成.html格式的文件 。这是最原始的,优点是简单,缺点是页面的修改不方便,我一般用到的地方是利用它生成整站参数文件。(通常网站如标题,名称等配置保存在数据库,我将它生成config.asp保存这些变量调用,避免频繁访问数据库)
-------------------------------------------------------------------------
以下为引用的内容:
<%
filename="test.htm"
if request("body")<>"" then
set fso = Server.CreateObject("Scripting.FileSystemObject")
set htmlwrite = fso.CreateTextFile(server.mappath(""&filename&""))
htmlwrite.write "<html><head><title>" & request.form("title") & "</title></head>"
htmlwrite.write "<body>输出Title内容: " & request.form("title") & "<br /> 输出Body内容:" & request.form("body")& "</body></html>" [中国站长站]
htmlwrite.close
set fout=nothing
set fso=nothing
end if
%>
<form name="form" method="post" action="">
<input name="title" value="Title" size=26>
<br>
<textarea name="body">Body</textarea>
<br>
<br>
<input type="submit" name="Submit" value="生成html">
</form>
-----------------------------------------------------------------------------
2、但是按照上面的方法生成html文件非常不方便,第二种方法就是利用模板技术,将模板中特殊代码的值替换为从表单或是数据库字段中接受过来的值,完成模板功能,将最终替换过的所有模板代码生成HTML文件。这种技术采用得比较多,大部分的CMS都是使用这类方法。
-----------------------------------------------------------------------------
以下为引用的内容:
template.htm " //模板文件
<html>
<head>
<title>$title$ by webjx.com</title>
</head>
<body>
$body$
</body>
</html>
TestTemplate.asp "// 生成Html
<%
Dim fso,htmlwrite
Dim strTitle,strContent,strOut
"// 创建文件系统对象
Set fso=Server.CreateObject("Scripting.FileSystemObject")
"// 打开网页模板文件,读取模板内容
Set htmlwrite=fso.OpenTextFile(Server.MapPath("Template.htm"))
strOut=f.ReadAll
htmlwrite.close
strTitle="生成的网页标题"
strC
"// 用真实内容替换模板中的标记
strOut=Replace(strOut,"$title$",strTitle)
strOut=Replace(strOut,"$body$",strContent)
"// 创建要生成的静态页
Set htmlwrite=fso.CreateTextFile(Server.MapPath("test.htm"),true)
"// 写入网页内容
htmlwrite.WriteLine strOut
htmlwrite.close
Response.Write "生成静态页成功!"
"// 释放文件系统对象
set htmlwrite=Nothing
set fso=Nothing
%>
-----------------------------------------------------------------------------
3、第三种方法就是用XMLHTTP获取动态页生成的HTML内容,再用ADODB.Stream或者Scripting.FileSystemObject保存成html文件。找到一段XMLHTTP生成Html的代码参考一下。
------------------------------------------------------------------------
以下为引用的内容:
<%
"常用函数
"1、输入url目标网页地址,返回值getHTTPPage是目标网页的html代码
function getHTTPPage(url)
dim Http
set Http=server.createobject("MSXML2.XMLHTTP")
Http.open "GET",url,false
Http.send()
if Http.readystate<>4 then
exit function
end if
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
set http=nothing
if err.number<>0 then err.Clear
end function
"2、转换乱玛,直接用xmlhttp调用有中文字符的网页得到的将是乱玛,可以通过adodb.stream组件进行转换
Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
txtURL=server.MapPath("../index.asp")
sText = getHTTPPage(txtURL)
Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
filename="../index.htm"
Set openFile=FileObject.OpenTextfile(server.mapPath(filename),2,true) "true为不存在自行建立
openFile.writeline(sText)
Set OpenFile=nothing
%>
<script>
alert("静态网页生成完毕");
history.back();
</script>
当然,凡事有利必有弊,生成HTML页面无形中也耗费大量的磁盘空间以存放这些静态文件,在编辑页面过程中除读写数据库外,也要读写服务器磁盘,页面样式的改动必须重新生成全部HTML文件,等等。
像很多搜索引擎,都可以提交网站的页面地址列表,动态文件的收录问题已经不算是个问题了(如google sitemap)。得失就要自己衡量把握了,但无论如何,我们还是要懂得如何操作的。这里就引用一下别人的文章说明几种常见的生成思路,供大家参考参考。
1、下面这个例子直接利用FSO把html代码写入到文件中然后生成.html格式的文件 。这是最原始的,优点是简单,缺点是页面的修改不方便,我一般用到的地方是利用它生成整站参数文件。(通常网站如标题,名称等配置保存在数据库,我将它生成config.asp保存这些变量调用,避免频繁访问数据库)
-------------------------------------------------------------------------
以下为引用的内容:
<%
filename="test.htm"
if request("body")<>"" then
set fso = Server.CreateObject("Scripting.FileSystemObject")
set htmlwrite = fso.CreateTextFile(server.mappath(""&filename&""))
htmlwrite.write "<html><head><title>" & request.form("title") & "</title></head>"
htmlwrite.write "<body>输出Title内容: " & request.form("title") & "<br /> 输出Body内容:" & request.form("body")& "</body></html>" [中国站长站]
htmlwrite.close
set fout=nothing
set fso=nothing
end if
%>
<form name="form" method="post" action="">
<input name="title" value="Title" size=26>
<br>
<textarea name="body">Body</textarea>
<br>
<br>
<input type="submit" name="Submit" value="生成html">
</form>
-----------------------------------------------------------------------------
2、但是按照上面的方法生成html文件非常不方便,第二种方法就是利用模板技术,将模板中特殊代码的值替换为从表单或是数据库字段中接受过来的值,完成模板功能,将最终替换过的所有模板代码生成HTML文件。这种技术采用得比较多,大部分的CMS都是使用这类方法。
-----------------------------------------------------------------------------
以下为引用的内容:
template.htm " //模板文件
<html>
<head>
<title>$title$ by webjx.com</title>
</head>
<body>
$body$
</body>
</html>
TestTemplate.asp "// 生成Html
<%
Dim fso,htmlwrite
Dim strTitle,strContent,strOut
"// 创建文件系统对象
Set fso=Server.CreateObject("Scripting.FileSystemObject")
"// 打开网页模板文件,读取模板内容
Set htmlwrite=fso.OpenTextFile(Server.MapPath("Template.htm"))
strOut=f.ReadAll
htmlwrite.close
strTitle="生成的网页标题"
strC
"// 用真实内容替换模板中的标记
strOut=Replace(strOut,"$title$",strTitle)
strOut=Replace(strOut,"$body$",strContent)
"// 创建要生成的静态页
Set htmlwrite=fso.CreateTextFile(Server.MapPath("test.htm"),true)
"// 写入网页内容
htmlwrite.WriteLine strOut
htmlwrite.close
Response.Write "生成静态页成功!"
"// 释放文件系统对象
set htmlwrite=Nothing
set fso=Nothing
%>
-----------------------------------------------------------------------------
3、第三种方法就是用XMLHTTP获取动态页生成的HTML内容,再用ADODB.Stream或者Scripting.FileSystemObject保存成html文件。找到一段XMLHTTP生成Html的代码参考一下。
------------------------------------------------------------------------
以下为引用的内容:
<%
"常用函数
"1、输入url目标网页地址,返回值getHTTPPage是目标网页的html代码
function getHTTPPage(url)
dim Http
set Http=server.createobject("MSXML2.XMLHTTP")
Http.open "GET",url,false
Http.send()
if Http.readystate<>4 then
exit function
end if
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
set http=nothing
if err.number<>0 then err.Clear
end function
"2、转换乱玛,直接用xmlhttp调用有中文字符的网页得到的将是乱玛,可以通过adodb.stream组件进行转换
Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
txtURL=server.MapPath("../index.asp")
sText = getHTTPPage(txtURL)
Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
filename="../index.htm"
Set openFile=FileObject.OpenTextfile(server.mapPath(filename),2,true) "true为不存在自行建立
openFile.writeline(sText)
Set OpenFile=nothing
%>
<script>
alert("静态网页生成完毕");
history.back();
</script>

2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
展开全部
看这个吧,asp生成HTM静态列表分页(含代码,已测试成功)
http://www.code-123.com/html/2008730222714580.html
http://www.code-123.com/html/2008730222714580.html
参考资料: http://www.code-123.com
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用飞鸟的生成系统吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询