静态网页简易生成方法
2014-05-07 10:27
344 查看
目前要完成静态页面生成的主要方法有简单的模板替换、常见的ASP+FSO等,接下来介绍一种更为简单的方法,原理就是借助XMLHTTP对象获取目标页面的源代码,然后写入到静态网页文件中。
Dim filename,fso,fout
filename="index.html"
Setfso=server.CreateObject("Scripting.FileSystemObject")
path=server.MapPath(filename)
Set fout=fso.CreateTextFile(path)
fout.WriteLine("<!--This page iscreated by program on "&now&" automatically-->")
webstr = getHTTPPage("http://url")
fout.WriteLine(webstr)
fout.close
set fout=nothing
set fso=nothing
'生成后让网页自动关闭
Response.Write("<script>")
Response.Write("functionToClose(){")
Response.Write("window.opener=null;window.close();}")
Response.Write("setTimeout(ToClose,10000);")
Response.Write("</script>")
'获取目标网页的源代码
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")
if len(Http.responseBody)<1000 then
Response.End()
end if
set http=nothing
if err.number<>0 then err.Clear
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
另外可以设置这段程序定时执行,先把代码写到一个ASP文件里,然后在另一网页中使用JS调用定时程序,当然还有另外一种方法,就是用windows的任务计划,这里的方法是把下面代码写入一静态页中,然后在浏览器打开网页
<script>
function run(){
window.open('make_html.asp','_blank');}
setInterval(run,5000);
</script>
在JavaScript中使用XMLHttpRequest对象获取网页代码的方法,在返回中文的时候会出现乱码的原因是:
1、xtmlhttp 返回的数据默认的字符编码是utf-8,如果客户端页面是gb2312或者其它编码就会产生乱码
2、post方法提交的数据默认字符编码也是utf-8,如果服务器端是gb2312或其他编码数据就会产生乱码
解决方法:
1、若客户端是gb2312编码,则在服务器指定输出流编码
Response.ContentType ="text/html"
Response.Charset = "GB2312"
2、服务器端和客户端都使用utf-8编码
还有一个常见的编码问题是URL编码解码问题,下面使用JavaScript实现asp中的UrlEncode和UrlDecode功能,这里也可以学到JavaScript如何调用VBscript的函数
<scriptlanguage="vbscript">
Function str2asc(strstr)
str2asc = hex(asc(strstr))
End Function
Function asc2str(ascasc)
asc2str = chr(ascasc)
End Function
</script>
本文为Anyforweb技术分享博客,需要了解网站建设相关,请访问anyforweb.com。
Dim filename,fso,fout
filename="index.html"
Setfso=server.CreateObject("Scripting.FileSystemObject")
path=server.MapPath(filename)
Set fout=fso.CreateTextFile(path)
fout.WriteLine("<!--This page iscreated by program on "&now&" automatically-->")
webstr = getHTTPPage("http://url")
fout.WriteLine(webstr)
fout.close
set fout=nothing
set fso=nothing
'生成后让网页自动关闭
Response.Write("<script>")
Response.Write("functionToClose(){")
Response.Write("window.opener=null;window.close();}")
Response.Write("setTimeout(ToClose,10000);")
Response.Write("</script>")
'获取目标网页的源代码
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")
if len(Http.responseBody)<1000 then
Response.End()
end if
set http=nothing
if err.number<>0 then err.Clear
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
另外可以设置这段程序定时执行,先把代码写到一个ASP文件里,然后在另一网页中使用JS调用定时程序,当然还有另外一种方法,就是用windows的任务计划,这里的方法是把下面代码写入一静态页中,然后在浏览器打开网页
<script>
function run(){
window.open('make_html.asp','_blank');}
setInterval(run,5000);
</script>
在JavaScript中使用XMLHttpRequest对象获取网页代码的方法,在返回中文的时候会出现乱码的原因是:
1、xtmlhttp 返回的数据默认的字符编码是utf-8,如果客户端页面是gb2312或者其它编码就会产生乱码
2、post方法提交的数据默认字符编码也是utf-8,如果服务器端是gb2312或其他编码数据就会产生乱码
解决方法:
1、若客户端是gb2312编码,则在服务器指定输出流编码
Response.ContentType ="text/html"
Response.Charset = "GB2312"
2、服务器端和客户端都使用utf-8编码
还有一个常见的编码问题是URL编码解码问题,下面使用JavaScript实现asp中的UrlEncode和UrlDecode功能,这里也可以学到JavaScript如何调用VBscript的函数
<scriptlanguage="vbscript">
Function str2asc(strstr)
str2asc = hex(asc(strstr))
End Function
Function asc2str(ascasc)
asc2str = chr(ascasc)
End Function
</script>
本文为Anyforweb技术分享博客,需要了解网站建设相关,请访问anyforweb.com。
相关文章推荐
- ASP.NET生成静态网页的方法
- ASP.NET生成静态网页的方法
- ASP.NET生成静态网页的方法
- ASP生成静态网页的一种方法
- ASP生成静态网页的多种方法
- ASP生成静态网页的方法
- 一种非常简单的静态网页生成方法介绍
- ASP.NET生成静态网页的方法
- ASP生成静态网页的方法
- ASP.NET生成静态网页的方法
- PHP生成静态html网页的三种方法
- ASP.NET生成静态网页的方法
- PHP生成静态html网页的三种方法
- ASP生成静态网页的方法
- ASP生成静态网页的方法
- PHP生成静态网页的方法
- ASP.NET生成静态网页的方法
- ASP.NET生成静态网页的方法
- ASP.NET生成静态网页的方法
- ASP.NET生成静态网页的方法