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

简介: 一、目前的静态页生成方法有简单的模板替换、常见的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>

 

相关文章
|
1月前
|
人工智能 安全 Java
Spring AI 核心架构解析:构建企业级 AI 应用的 Java 新范式
Spring AI 为 Java 开发者提供企业级 AI 应用新范式,通过分层架构、统一抽象(如 ChatClient、PromptTemplate)与 Spring 生态深度集成,支持 RAG、函数调用、流式响应等核心功能,实现安全、可观测、可维护的智能系统构建。
610 8
|
7月前
|
数据采集 运维 数据可视化
别再靠拍脑袋了!搞懂数据治理框架,企业才有未来
别再靠拍脑袋了!搞懂数据治理框架,企业才有未来
282 11
|
4月前
|
存储 供应链 数据可视化
Java 大视界 -- 基于 Java 的大数据可视化在企业供应链风险预警与决策支持中的应用(204)
本篇文章探讨了基于 Java 的大数据可视化技术在企业供应链风险预警与决策支持中的深度应用。文章系统介绍了从数据采集、存储、处理到可视化呈现的完整技术方案,结合供应链风险预警与决策支持的实际案例,展示了 Java 大数据技术如何助力企业实现高效、智能的供应链管理。
|
6月前
|
容器
100. [HarmonyOS NEXT 实战案例:音乐播放器] 进阶篇 - 交互式音乐播放器的状态管理与控制
在基础篇中,我们学习了如何使用HarmonyOS NEXT的`RowSplit`组件构建音乐播放器的基本界面。在本篇教程中,我们将深入探讨音乐播放器的交互功能和状态管理,包括播放状态切换、进度条控制、时间显示等高级特性,让音乐播放器界面更加生动和实用。
207 0
|
前端开发 API 开发者
鸿蒙next版开发:相机开发-录像(ArkTS)
在HarmonyOS 5.0中,ArkTS提供了一套完整的API来管理相机录像功能。本文详细介绍了如何在ArkTS中实现录像功能,包括导入接口、创建Surface、获取相机输出能力、创建会话并开始录像以及监听录像输出流状态,并提供了代码示例进行解读。希望本文能帮助开发者更好地利用ArkTS的相机录像功能。
312 5
|
存储 XML 人工智能
深度解读AI在数字档案馆中的创新应用:高效识别与智能档案管理
基于OCR技术的纸质档案电子化方案,通过先进的AI能力平台,实现手写、打印、复古文档等多格式高效识别与智能归档。该方案大幅提升了档案管理效率,确保数据安全与隐私,为档案馆提供全面、智能化的电子化管理解决方案。
1082 48
|
JavaScript 前端开发 安全
跨域解决方案有哪些?
本文介绍了多种跨域解决方案,包括JSONP、CORS、postMessage、WebSocket、document.domain+iframe、window.name、location.hash、Node.js代理、Nginx代理和CORS Anywhere。每种方法都有其适用场景和优缺点,如JSONP简单但只支持GET请求,CORS安全但兼容性稍差,WebSocket适用于实时通信但需服务器支持。开发者可根据具体需求选择合适的跨域方案。
459 3
跨域解决方案有哪些?
|
10月前
|
人工智能 自然语言处理 Java
IDEA中使用DeepSeek满血版的手把手教程来了!
IDEA中使用DeepSeek满血版的手把手教程来了!
|
人工智能 计算机视觉 Python
AI计算机视觉笔记八:基于mediapipe的虚拟绘画
该项目利用MediaPipe手部关键点识别技术,实现了隔空绘画功能。用户可以通过手势控制绘画工具,选择颜色或橡皮擦。环境配置基于`mediapipe_env`,在PyCharm中运行。项目包括两个文件:`AiVirtualPainter.py`负责绘画逻辑,`HandTrackingModule.py`用于手部关键点检测。此项目展示了AI技术在互动应用中的潜力,适合初学者实践与学习。
412 10
|
算法 C语言 计算机视觉
【数据结构与算法 经典例题】括号匹配问题
【数据结构与算法 经典例题】括号匹配问题