利用XMLHTTP组件生成HTML静态页面

今天算是把动转静动手做了一下,发现了一个问题。

就是分页的实现。

首先是一级页面上的前几条数据是调用一个XML文件上,这个XML文件是通过手动刷新一个程序,用来动态生成XML文件。

然后有一个后台程序,例如文章发布系统,如果每发布一篇文章,则生成一个静态页面。

另外,修改一篇文章,则将以前生成的静态页面重新生成一遍,采用一个模板,毕竟页面不仅仅是数据的事,还有一些图片啊,什么的。

然后就是一个分页程序,将所有的文章标题列出,这里暂时还不会做成纯静态的。

附部分程序代码:

由于网易的博客对代码的处理不是太好,致使一些代码省略掉,例如标签的ID等。

有可能致使程序不能正常运行。 

                              ——Victor.Yan 07.5.16 更新

<%If session("admin")<>"" then%>

<head>
<meta http-equiv="refresh" content="1;URL=add_info.asp" />
<!--#include virtual="/dtos/conn/conn.asp"-->
<%
set rsa=server.CreateObject("Adodb.recordset")
rsa.open "Select *from article",conn,1,2
rsa.addnew
rsa("classid")=request("infoclass")
rsa("title")=trim(request("title"))
rsa("content")=trim(request("content"))
rsa.update
%>

<%
Set rsg=conn.execute("select id from article order by id desc")
%>

<%
'如果对记录做了添加,那么相应的静态页面应该重新生成一遍!

set rs=conn.execute("select *from article where id"))
session("dd")=rsg("id")

Set fso=server.CreateObject("scripting.filesystemobject")
t=server.mappath("/dtos/listinfo/"& year(rs("datetime"))& "-" & Month(rs("datetime")) &"-" & Day(rs("datetime")))
If fso.folderexists(t) Then         '稍微判断一下, 只将新日期生成文件夹
'Set folder=fso.createfolder(t & "ad")
else
Set folder=fso.createfolder(t)
End If

path1= t  & ""

'If fso.fileexists(path1 & hour(rs("datetime")) & Minute(rs("datetime")) & Second(rs("datetime")) &  ".html") Then '只有新记录才生成静态页面
'else
'Set file=fso.createtextfile(path1 & hour(rs("datetime")) & Minute(rs("datetime")) & Second(rs("datetime")) &  ".html")
'end if
'end if
%>

<%
response.charset="gb2312"
dim objXmlHttp
 set objXmlHttp = Server.createObject("Microsoft.XMLHTTP")
 objXmlHttp.open "GET","http://localhost:8080/dtos/listinfo/template/template.asp?id="&session("dd"),false
 objXmlHttp.send()
 Dim binFileData
 binFileData = objXmlHttp.responseBody
    Dim objAdoStream
    set objAdoStream = Server.createObject("ADODB.Stream")
  objAdoStream.Type = 1
 objAdoStream.Mode=3
 objAdoStream.Open()
 objAdoStream.Write binFileData
 objAdoStream.SaveToFile path1 & hour(rs("datetime")) & Minute(rs("datetime")) & Second(rs("datetime")) &  ".html",2
 objAdoStream.Close()
 set objAdoStream=nothing
    set objXmlHttp=Nothing
%>

<style type="text/css">
<!--
.STYLE1 {color: #FF0000}
-->
</style>
</head>

<table width="519" height="197" border="0" align="center" cellpadding="0" cellspacing="0" style="border:1px solid #CCCCCC;">
  <tr>
    <td height="23" align="center"><span >添加成功!1秒钟后将自动跳转!<%=session("dd")%></span></td>
  </tr>
</table>
<%else%>
有错误发生
<%End if%>

修改记录则重新生成静态页面

<%If session("admin")<>"" then%>

<head>
<meta http-equiv="Refresh" content="1;URL=manage_info.asp" />
<!--#include virtual="/dtos/conn/conn.asp"-->

 <%

'对数据库记录进行修改
set rsg=server.createobject("adodb.recordset")
rsg.open "Select *from article where id"),conn,1,2
rsg("classid")=request("infoclass")
rsg("title")=trim(request("title"))
rsg("content")=trim(request("content"))
rsg.update

%>

<%
'如果对记录做了修改,那么相应的静态页面应该重新生成一遍!

set rs=conn.execute("select *from article where id"))

Set fso=server.CreateObject("scripting.filesystemobject")
t=server.mappath("/dtos/listinfo/"& year(rs("datetime"))& "-" & Month(rs("datetime")) &"-" & Day(rs("datetime")))
If fso.folderexists(t) Then         '稍微判断一下, 只将新日期生成文件夹
else
Set folder=fso.createfolder(t)
End If

path1= t  & ""

'If fso.fileexists(path1 & hour(rs("datetime")) & Minute(rs("datetime")) & Second(rs("datetime")) &  ".html") Then '只有新记录才生成静态页面
'else
'Set file=fso.createtextfile(path1 & hour(rs("datetime")) & Minute(rs("datetime")) & Second(rs("datetime")) &  ".html")
'end if
'end if
%>

<%
    response.charset="gb2312"
    dim objXmlHttp
 set objXmlHttp = Server.createObject("Microsoft.XMLHTTP")
 objXmlHttp.open "GET","http://localhost:8080/dtos/listinfo/template/template.asp?id="&session("id"),false
 objXmlHttp.send()
 Dim binFileData
 binFileData = objXmlHttp.responseBody
    Dim objAdoStream
    set objAdoStream = Server.createObject("ADODB.Stream")
  objAdoStream.Type = 1
 objAdoStream.Mode=3
 objAdoStream.Open()
 objAdoStream.Write binFileData
 objAdoStream.SaveToFile path1 & hour(rs("datetime")) & Minute(rs("datetime")) & Second(rs("datetime")) &  ".html",2
 objAdoStream.Close()
 set objAdoStream=nothing
    set objXmlHttp=Nothing
%>

 

<style type="text/css">
<!--
.STYLE1 {color: #FF0000}
-->
</style>
</head>

<table width="519" height="197" border="0" align="center" cellpadding="0" cellspacing="0" style="border:1px solid #CCCCCC;">
  <tr>
    <td height="23" align="center"><span >修改成功!1秒钟后将自动跳转!</span></td>
  </tr>
</table>
<%else%>
有错误发生
<%End if%>

 

前N条记录

createtoplist.asp

<!--#include virtual="/dtos/conn/conn.asp"-->
<%
Set rs=conn.execute("select top 6 * from article order by datetime desc")
Dim id(10)
Dim title(10)
Dim author(10)
Dim content(10)
Dim datetime(10)

Do until rs.eof
id(line)=rs("id")
title(line)=rs("title")
content(line)=rs("content")
datetime(line)=rs("datetime")

line=line+1

rs.movenext
Loop
%>
<%
Set fso=server.CreateObject("scripting.filesystemobject")
Set file=fso.createtextfile(server.mappath("xml/top8.xml"))
file.writeline("<?xml version=""1.0"" encoding=""gb2312""?>")
file.writeline("<articles>")
For i=0 To line-1
file.writeline("<article>")
file.writeline("<id>" & id(i) & "</id>")
file.writeline("<title>" & title(i) & "</title>")
file.writeline("<datetime>" & datetime(i) & "</datetime>")
file.writeline("</article>")
next
file.writeline("</articles>")
%>
<table width="596" height="218" border="0" align="center" style="border:1px solid #CCCCCC;">
  <tr>
    <td width="484" align="center">
<%response.write "XML文件生成成功!"
response.write "<a href='/dtos/listinfo/xml/top8.xml'>点击查看</a>"
%></td>
  </tr>
</table>

    A+
发布日期:2007年05月08日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: