注册 登录
编程论坛 ASP技术论坛

如何将ASP变成HTML后缀

taoxinhui 发布于 2007-11-09 13:57, 2771 次点击
问题如题目,希望各位大虾不吝啬,赐教我这个新手.小弟哭了
16 回复
#2
挥动2007-11-09 14:03

看来只有我能回答你了,老鸟看见都笑着走开了~~
asp动态页,html是静态页,
想把asp变成html,就把里头所有<%%>删除,就ok~~~

其实这样没有实际意义,说了等于白说...
你的意思是想动态生成html吗?
用js的 document.writeln("");可以灵活的动态生成html

[此贴子已经被作者于2007-11-9 14:09:52编辑过]

#3
天涯听雨2007-11-09 14:28


不知道你是要什么页在变成html。。。。如你所说,那就是一定是生成静态页方法了。

#4
hmhz2007-11-09 14:53
他的意思就是asp生成html 只是意思表达错了
最简单的asp生成html
[CODE]<%
Set xml = Server.CreateObject("Microsoft.XMLHTTP")
'把下面的地址替换成你的首页的文件地址,一定要用http://bbs.bc-cn.net/dispbbs.asp" target="_blank">https://开头的绝对路径,不能写相对路径
xml.Open "GET", "
http://bbs.bc-cn.net/dispbbs.asp", False
xml.Send
BodyText=xml.ResponseBody
BodyText=BytesToBstr(BodyText,"gb2312")
Set xml = Nothing
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile= fso.CreateTextFile(server.MapPath("dispbbs.htm"), True)
MyFile.WriteLine(BodyText)
MyFile.Close
%>[/CODE]
#5
翊铭2007-11-09 16:38

值得学习~!

#6
zhongx2007-11-10 19:07
确有过人之处.
#7
wslijing2007-11-13 11:44
请问
以下是引用hmhz在2007-11-9 14:53:14的发言:
他的意思就是asp生成html 只是意思表达错了
最简单的asp生成html
[CODE]<%
Set xml = Server.CreateObject("Microsoft.XMLHTTP")
'把下面的地址替换成你的首页的文件地址,一定要用http://bbs.bc-cn.net/dispbbs.asp" target="_blank">https://开头的绝对路径,不能写相对路径
xml.Open "GET", "
http://bbs.bc-cn.net/dispbbs.asp", False
xml.Send
BodyText=xml.ResponseBody
BodyText=BytesToBstr(BodyText,"gb2312")
Set xml = Nothing
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile= fso.CreateTextFile(server.MapPath("dispbbs.htm"), True)
MyFile.WriteLine(BodyText)
MyFile.Close
%>[/CODE]

这个是加在哪里边呢?每个页面里边吗?

对于那个路径,是不是写了首页地址,其他页面也会变成HTML后缀的呢?

#8
wslijing2007-11-14 10:05

[CODE]以下代码就是将一个ASP的动态页面生成一个HTML的静态页面,注释我已经加上了,自己看吧。


FileName = "Index"&Item_Classid&".htm"
FilePath = Server.MapPath("/")&"\"&FileName
Html_Temp = Html_Temp&FilePath&"< >"
以上代码是在建立最终生成静态文件的名称和路径。


Do_Url = "http://"
Do_Url = Do_Url&Request.ServerVariables("SERVER_NAME")&"/detail.asp"
Do_Url = Do_Url&"?Item_Classid="&Item_Classid
strUrl = Do_Url
以上代码是通过拼写Do_Url字符串来获得你所传递过来的文件路径和参数,并最终附值到strUrl变量中。

dim objXmlHttp
set objXmlHttp = Server.CreateObject("Microsoft.XMLHTTP")
objXmlHttp.open "GET",strUrl,false
objXmlHttp.send()
以上这段代码是在通过你所传递过来的strUrl解析该页面中的HTML代码;关键是这句(objXmlHttp.open "GET",strUrl,false )。


Dim binFileData
binFileData = objXmlHttp.responseBody
以上代码是将解析好的HTML代码附到binFileData中

Dim objAdoStream
set objAdoStream = Server.CreateObject("ADODB.Stream")
objAdoStream.Type = 1
objAdoStream.Open()
objAdoStream.Write(binFileData)
objAdoStream.SaveToFile FilePath,2
objAdoStream.Close()

以上这段代码是建立一个文件对象,将所拥有HTML代码的变量binFileData写到该文件中。

Html_Temp = Html_Temp&"<UL>"
Response.Write Html_Temp
Response.Write ( "<BR>" )
Response.Write ( "成功生成文件:" )
以上几句就不用我解释了。。。。:)

其实上面这个做法并不是很科学,还可以将代码更完善些。建议你将这个步骤封装到两个FUNCTION中,这样比较清晰并且方便重复调用,


CreateFile:用于建立生成的静态文件,其中调用GetUrlText进行脚本解析。

Function CreateFile(fileName,url)
Dim fs,fname
Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set fname = fs.CreateTextFile(FileName, True)
fname.Write GetUrlText(url)
fname.Close
Set fname = Nothing
Set fs = Nothing
End Function

GetUrlText:用语解析传递回来的ASP页面

Function GetUrlText(url)
Dim xmlHttp
Set xmlHttp = server.createobject("MSXML2.ServerXMLHTTP")
xmlHttp.setTimeouts 10000,10000,10000,30000
xmlHttp.Open "GET",url, False
xmlhttp.setRequestHeader "CONTENT-TYPE", "text/xml"
xmlHttp.Send
If xmlHttp.ReadyState = 4 Then
GetUrlText = xmlHttp.responseText
Else
GetUrlText = ""
End If
End Function


里面URL就是你传递过来的地址,而FileName就是生成文件的地址,你在调用时直接调用CreateFile,将FileName和URL传递过去就可以了,怎么样,是不是比上面的看起来清晰很多:)[/CODE]

我昨天找到的,但是放在funtion里边调用又要报错
不知道怎么用的

#9
wslijing2007-11-14 10:58

[CODE]<%

Function CreateFile(fileName,url)
Dim fs,fname
Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set fname =fs.CreateTextFile(FileName,True)
fname.Write GetUrlText(url)
fname.Close
Set fname = Nothing
Set fs = Nothing
End Function

Function GetUrlText(url)
Dim xmlHttp
Set xmlHttp = server.createobject("MSXML2.ServerXMLHTTP")
'xmlHttp.setTimeouts 10000,10000,10000,30000
xmlHttp.Open "GET",url,False
'xmlhttp.setRequestHeader "CONTENT-TYPE", "text/xml"
xmlHttp.Send
If xmlHttp.ReadyState = 4 Then
GetUrlText = xmlHttp.responseText
Else
GetUrlText = ""
End If
End Function

Dim Url

CreateFile Server.MapPath("index.html"),"http://localhost/CeShi/aspnet/index.asp"

response.Redirect "index.html"
%>
[/CODE]

把这个贴在index.asp中,可以生成index.html,但是页面没有数据

可能是这Set xmlHttp = server.createobject("MSXML2.ServerXMLHTTP")错了吧

怎么改呢?

#10
疯狂的探索者2007-11-14 11:01

不太明白啊,大侠们,说清楚一点行吗?我请教了.
#11
wslijing2007-11-14 14:48

求助中。。。

#12
gupiao1752007-11-14 17:38

这个问题,我也是经常看到有人提问,我也不是很董,帮你顶起来!

#13
taoxinhui2007-11-16 16:07

这个问题我已经解决了,给大家说说。假静态页面的设计,首先下一个ISAPI的一个软件,免费的哦,然后在ISAPI中装上,然后打开HTTPDB。INI文件,在里面建一个规则,<浏览器想看到>映射到<实际要的地址>。然后用户看到的是这样的地址http://xx/xx/xx/xx/xx实际的地址是http://xx/xx/xx?xx_id=123具体怎么你们可以搜url IIS 映射

,问题没说清楚,怪我。

[此贴子已经被作者于2007-11-16 16:11:23编辑过]

#14
wslijing2007-11-16 17:15
说清楚哦~~~
需要详细解说~~~~~~~~~~~~~~~~~~~~~
#15
wslijing2007-11-16 17:17

诚心希望发布这个问题的楼主,说出详细解决办法。。。。



期待中。。。。。。。。。。

#16
wslijing2007-11-16 17:24
这个ISAPI是控制IIS的啊?
那我传到网上去呢?那不是还是ASP后缀?
#17
gdk20062007-11-17 16:09

楼主的意思是URL重发,是地址映射吧!

就是:ASP的URL重写技术(IIS的ISAPI)

去网上搜索一下就知道了,这个需要在你的IIS里面装插件的,就是那个“Rewrite.dll”.

RewriteRule /info_(\d+)\.htm /info\.asp\?id=$1 [N,I]

上面写的就是将info.htm映射到info.asp上面,当然还有很多种写法的,看你自己的需求了。

我写的测试的:

RewriteRule /info_(\d+)\.jsp /info\.asp\?id=$1 [N,I]

RewriteRule /info_(\d+)\.aspx /info\.asp\?id=$1 [N,I]

RewriteRule /info_(\d+)\.php /info\.asp\?id=$1 [N,I]

RewriteRule /index\?id2=(\d+) /info\.asp\?id=$1 [N,I]

RewriteRule /info_(\d+)\.shtml /info\.asp\?id=$1 [N,I]

自己去看看吧!提醒一下,如果想在网络上用的话,就必须服务商那边安装这个插件的,我就是因为服务商端装插件要Money所以一直都没有好好弄过,也只有在本地玩玩了!


1