很巧妙的asp生成静态页面的方法
时间:2012-07-20 10:15来源:未知 作者:admin 点击: 次
很巧妙的asp生成静态页面的方法
总体思想就是:充分利用asp包含文件的特性。
比如生成首页:网上的方法是把包含文件放在<textarea><!--#include file="/index.asp"--></textarea>中。
然后通过form表单提交获得textarea的值,也就是整个首页的源代码。
但是这种方法有一个缺点,就是包含文件中不能有form表单。
如果有表单就会出问题,原因是form表单不能嵌套。
因此我又改进了一下,现在把代码贴出来:
<%
if request("h")<>"" then
filename="./tt.html"
set fso = Server.CreateObject("Scripting.FileSystemObject")
set fout = fso.CreateTextFile(server.mappath(""&filename&""))
fout.write HTMLDecode(request.form("h"))
fout.close
set fout=nothing
set fso=nothing
response.write("<script>alert('生成测试页搞定!')</script>")
response.End()
end if
%>
<iframe id="qq"><!--#include file="../mainclass/fuke/index.asp"--></iframe>
<form method="post" action="tt.asp" name="form1">
<input type="hidden" name="h" id="hh" />
</form>
<script type="text/javascript">
document.getElementById("hh").value=document.getElementById("qq").innerHTML;
document.form1.submit();
</script>
<%
Function HTMLDecode(sText)
Dim I
sText = Replace(sText, "&" , Chr(38))
sText = Replace(sText, """", Chr(34))
sText = Replace(sText, "<" , Chr(60))
sText = Replace(sText, ">" , Chr(62))
sText = Replace(sText, " ", Chr(32))
For I = 1 To 255
sText = Replace(sText, "&#" & I & ";", Chr(I))
Next
HTMLDecode = sText
End Function
%>代码解析:
1-13行,判断是不是表单提交,如果是提交则通过fso生成静态页面。否则继续向下执行代码。
14行,把包含页面放在iframe这个标签中
15行,提交数据的form表单
16行,javascript代码,获取数据并自动提交表单。
17-30行,html解码函数,提交的数据中的html标签会被编码,所以在获取的时候要解码一下。
注意事项:
生成是可能会报,没有错误。
原因是iis默认asp提交数据的最大值为204800也就是大约200KB左右。
但是可能页面的源代码会超过200KB。
解决办法:停掉IIS服务,修改C:\WINDOWS\system32\inetsrv\MetaBase.xml文件中AspMaxRequestEntityAllowed="512000"的值,重起IIS服务即可。
(责任编辑:admin)