一种非常简单的静态网页生成方法介绍

简介: 一、目前的静态页生成方法有简单的模板替换、常见的ASP+FSO等,这里给大家介绍一种更简单的方法。原理就是借助XMLHTTP对象获取目标页面的源代码,然后写入到静态网页文件中。代码如下: CodeDim filename,fso,foutfilename="index.

       一、目前的静态页生成方法有简单的模板替换、常见的ASP+FSO等,这里给大家介绍一种更简单的方法。原理就是借助XMLHTTP对象获取目标页面的源代码,然后写入到静态网页文件中。代码如下:

Code
Dim filename,fso,fout
filename
="index.html"        

Set fso=server.CreateObject("Scripting.FileSystemObject")
path
=server.MapPath(filename)      
Set fout=fso.CreateTextFile(path)  
fout.WriteLine(
"<!--This page is created 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(
"function ToClose(){")
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的函数

< script language = " vbscript " >  
Function  str2asc(strstr) 
   str2asc 
=   hex ( asc (strstr)) 
End Function  
Function  asc2str(ascasc) 
   asc2str 
=   chr (ascasc) 
End Function  
</ script >  

 

Code
<script language="javascript"> 
function UrlEncode(str)
  
var ret=""
  
var strSpecial="!\"#$%&'()*+,/:;<=>?[]^`{|}~%"; 
  for(var i=0;i<str.length;i++){ 
   var chr = str.charAt(i); 
    var c=str2asc(chr); 
    if(parseInt("0x"+c) > 0x7f){ 
      ret+="%"+c.slice(0,2)+"%"+c.slice(-2); 
    }else{ 
      if(chr==" ") 
        ret+="+"; 
      else if(strSpecial.indexOf(chr)!=-1) 
        ret+="%"+c.toString(16); 
      else 
        ret+=chr; 
    } 
  } 
  return ret; 

function UrlDecode(str){ 
  var ret=""; 
  for(var i=0;i<str.length;i++){ 
   var chr = str.charAt(i); 
    if(chr == "+"){ 
      ret+=" "; 
    }else if(chr=="%"){ 
     var asc = str.substring(i+1,i+3); 
     if(parseInt("0x"+asc)>0x7f){ 
      ret+=asc2str(parseInt("0x"+asc+str.substring(i+4,i+6))); 
      i+=5; 
     }else{ 
      ret+=asc2str(parseInt("0x"+asc)); 
      i+=2; 
     } 
    }else{ 
      ret+= chr; 
    } 
  } 
  return ret; 

tar_str="爱情"
encode_str=UrlEncode(tar_str)
decode_str=UrlDecode(encode_str)
document.write("编码后:"+encode_str+"<br>");
document.write("解码后:"+decode_str);
</script>

 

相关文章
|
3月前
|
Web App开发 移动开发 前端开发
初探前端世界:网页基本结构入门指南
初探前端世界:网页基本结构入门指南
64 0
初探前端世界:网页基本结构入门指南
|
1月前
|
前端开发 Java 编译器
N 个值得一看的后端代码片段
三元运算符:坏习惯还是好习惯?最高赞的回答是一个名为Ted Dziuba的老哥说的。为了便于阅读,如果三元组适合一行 80 个字符,我才会使用它。大家好,我是南哥。一个Java学习与进阶的领路人,相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
N 个值得一看的后端代码片段
|
3月前
|
NoSQL Redis
WordPress懒人优化方案,有效提升网页加载速度
在WordPress商店安装并启用插件WP Fastest Cache,按照说明设置。确保服务器已安装Redis,再安装Redis Object Cache并启用,无需额外配置。这两个步骤能显著提升网站加载速度,带来流畅的浏览体验。
94 8
|
4月前
|
存储 移动开发 缓存
HTML5 的离线储存怎么使用,工作原理能不能解释一下?
HTML5 的离线储存怎么使用,工作原理能不能解释一下?
41 2
|
4月前
|
缓存 前端开发 JavaScript
如何优化前端网页加载速度:实用技巧大揭秘
在当今互联网时代,快速加载的网页是用户体验的关键。本文将介绍一些实用的前端优化技巧,从减少HTTP请求到使用CDN加速,帮助开发人员提高网页加载速度,提升用户满意度。
|
4月前
|
缓存 前端开发 JavaScript
如何优化前端网页加载速度:7个实用技巧
在当今互联网时代,网页加载速度对用户体验至关重要。本文将介绍7个实用的技巧,帮助前端开发者优化网页加载速度,提升用户体验。从压缩资源到异步加载,从图片优化到缓存策略,这些技巧将帮助你在前端开发中取得更好的效果。
|
4月前
|
存储 缓存 移动开发
html实现离线缓存(工作原理+怎么使用+应用场景)
html实现离线缓存(工作原理+怎么使用+应用场景)
44 0
|
4月前
|
监控
web后端-最好用的扒站仿站工具(网页克隆网页复制)
web后端-最好用的扒站仿站工具(网页克隆网页复制)
|
前端开发
前端常规关于网页文件下载的问题
前端常规关于网页文件下载的问题
52 0
|
数据采集 前端开发 JavaScript
Python爬虫实战:抽象包含Ajax动态内容的网页数据
Python爬虫实战:抽象包含Ajax动态内容的网页数据