ASP非模板生成静态页

首先我们要创建一个数据库表news包括字段
id   title     contect     date 
接着我们设置一个ASP数据显示页shownew.asp
代码如下:
<%@codepage=936%>
<%
dim connstr,dirs
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("text.mdb")&";Jet OLEDB:Database "
set conn=server.createobject("ADODB.CONNECTION")
if conn.state=1 then
conn.Close
end if
conn.Open connstr
new_id=Request.QueryString("new_id")
if not new_id="" then
set rs=Server.CreateObject("Adodb.RecordSet")
rs.Open "select * from news where id="&new_id,conn,1,1
do while not rs.eof
Response.Write("<table><caption>"&rs(1)&"</caption>")
Response.Write("<tr><td>"&rs(2)&"</td></tr><tr><td> 发布时间 :"&rs(3)&"</td></tr></table>")
rs.MoveNext
loop
rs.Close
set rs=Nothing
end if
conn.Close
set conn=Nothing
%> 
最后就是关键的静态页生成页了dytost.asp
代码如下:
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<base target="_blank" />
<iframe id="myiframe"  style=" display:none"></iframe>
<%
dim connstr,dirs
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("text.mdb")&";Jet OLEDB:Database Password=qgyqgyqgy"
set conn=server.createobject("ADODB.CONNECTION")
if err then
err.Clear
else
conn.Open connstr
end if
if request("page")<>"" then
page=cint(request("page"))
else       
page=1
end if
set rs=Server.CreateObject("Adodb.RecordSet")
rs.Open "select * from new ",conn,1,1
mpage1=rs.Recordcount
rs.move  (page-1)*1
url="http://localhost/example/asp生成静态页/shownew.asp?new_id="&rs(0)//这里一定要是完整URL
fvfile="new"&rs(0)&".html"
response.write"<b><font color=""#FF0000"">"&page&"</font>/<font color=""#FF0000"">"&mpage1&"</font> 正在生成新闻页面,请等待......</b><span id=showImport></span><IE:Download ID=""oDownload"" STYLE=""behavior:url(#default#download)"" />"
Response.Write"<script>document.getElementById('myiframe').src=\'#\'" /script>"
savefile  url,fvfile
rs.Close
set rs=Nothing
if page<mpage1 then
Response.Write"<meta http-equiv=""refresh"" content=""0;url=dytost.asp?page="&page+1&"'"">"
end if
function savefile(url,fvfile)
on error resume next 
url=url//这一定要用完整URL地址
wstr = GetPage(url)+url
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Set CrFi=fs.CreateTextFile(server.MapPath(fvfile))
Crfi.Writeline(wstr)
set CrFi=nothing
set fs=nothing
//Response.Write("<script> alert('"&fvfile&"生成成功')</script>")
 end function
Function GetPage(url)
    dim Retri
    Set Retri = CreateObject("Microsoft.XMLHTTP")
   With Retri
    .Open "Get", url, False
    .Send
    GetPage = BytesToBstr(.ResponseBody)
    End With
    Set Retri = Nothing
    End Function
  
    Function BytesToBstr(body)
    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 = "GB2312"
    BytesToBstr = objstream.ReadText
    objstream.Close
    set objstream = nothing
End Function
%>
好了现在就可了,
不过有一点大家一定要注意啊!因为这个是先将代码静态化然后,再将静态化的代码生成静态页的,所以由于生成的速度太快,可能第一次生成的文件是显示不正常的,这是我们只要在运行一下这个dytost.asp文件就可以了,大家也可以在程序中添加时间间隔摄者的代码来避免这个情况的出现

你可能感兴趣的:(职场,休闲,ASP非模板生成静态页)