分享

ASP+模板生成静态HTML

 zjsxShenwx 2008-08-28
ASP+模板生成静态HTML  发帖心情 Post By:2007-4-24 21:53:08

不用我再说ASP转变成HTML的好处了吧,呵呵,其中最值得知道的就是:静态页比动态页对服务器的压力小得多,同时,静态页被搜索到的几率比动态页多得多。
    
    废话少说,现在就让我们看看如何用ASP+模板生成HTML。
    
    如何使得ASP页面转变为HTML?一般都会想到FSO组件,因为该组件能新建任何文件格式。那么其整个运行过程是怎么样的呢?我们可以把这个过程概括为一下三步:
    
    a、提供信息输入页面进行信息采集;
    b、接受信息值先保存到数据库,再生成文件;
    c、显示刚被创建的HTML文件的路径地址与其他相关信息,如:修改、删除等。
    
    该技术的实现过程中有如下几个需要注意的问题:
    
    i、FSO生成的文件是直接放在一个大文件夹下,还是单独放在某个每日更新的子文件夹中?随着时间的推移,通过FSO生成的文件会越来越多,管理压力也会越来越大……通常你可能看到一些地址诸如http://www./2004-5-20/200405201111.htm,通过分析可以得出应该是建立了当前日期的文件夹。这样,一个文件夹的页面内容都属于同一天并以当天的日期为文件夹名,查看、管理也就显得比较简单、合理。
    ii、我们在试图通过以上方法建立文件夹的时候,又发现了第二个问题。第一次通过FSO建立以当前日期命名的文件夹,没有问题。当我在同一天有新的文件需要生成时,因为是同一个程序,所以,其又将会执行建立同样的文件夹,此时,FSO组件会发现该路径已存在……卡壳! 因此,在这里我们应该首先添加一条判断语句,来判断一下文件夹是否存在,语句如下:
    
    <%
    ‘如果文件夹不存在就创建
    IF FileObject.FolderExists(Server.MapPath(Folder))=False Then
     FileObject.CreateFolder Server.MapPath(Folder)
    End If
    %>
    
    iii、文件夹是建立了,文件该如何建立呢?主要也就是文件名的生成,当然这个就需要自己来写个函数,功能就是如何生成文件名,语句如下:
    
    <%
    Function GetFileName(FileName)
    FileName = FileName
    FileName = replace(FileName,"-","")
    FileName = replace(FileName," ","")
    FileName = replace(FileName,":","")
    FileName = replace(FileName,"PM","")
    FileName = replace(FileName,"AM","")
    FileName = replace(FileName,"上午","")
    FileName = replace(FileName,"下午","")
    GetFileName = FileName & ".htm"
    End Function
    %>
    
    函数调用语句:
    <%
    FileName = GetFileName(now())
    %>
    
    其实,就是以年月日时分秒来命名的文件。
    iv、最后,生成的文件该如何被查看、修改和删除?这就需要把生成文件的相关的内容都保存的数据库中,这包括文件名,文件路径,文件内容等,这些问题在这里就不在多说了,相信学过ASP的人应该都会。
    
    下面介绍如何把模板和FSO结合从而生成HTML。整个过程为:将模板中特殊代码的值替换为从表单接受过来或者其他特定的值,完成模板功能;将最终替换过的所有模板代码生成HTML文件。
    
    模板的实现有两种方法:一种是直接以文件的形式存在,使用的时候用FSO读取文件,一种是把模板代码保存在数据库中,使用的时候从数据库中读出。本文推荐使用前一种方法,因为以文件形式存在的模板在设计时比较直观,如果把文件保存为HTML格式,在设计时可以直接看到最终的界面,可以根据需要随时更改。下面介绍用FSO读取文件的过程,使用数据库存储的就不做介绍了,相信地球人都知道,呵呵,读出文件后用Replace函数把模板中特殊代码的值替换为从表单接受过来或者其他特定的值,将最终替换过的所有模板代码生成HTML文件。
    
    <%
    ‘下面首先读取模板文件,将其中的全部代码保存到一个字符串中
    Dim strTemplate
    Dim FileObject ‘声明一个FileSystemObject对象实例
    Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
    Dim TextFile ‘声明一个TextStream对象实例
    Set TextFile= FileObject.OpenTextFile(Server.MapPath("template.htm"))
    strTemplate=TextFile.ReadAll ‘读取整个文件
    TextFile.Close
    Set TextFile=Nothing ‘关闭TextStream对象
    
    ‘下面利用客户输入的内容替换模板中的相应字符串
    strTemplate=Replace(strTemplate,"$title$",Request.Form("Title"))
    strTemplate=Replace(strTemplate,"$body$",Request.Form("Body"))
    strTemplate=Replace(strTemplate,"$foot$",Request.Form("foot"))
    
    ‘下面生成HTML文件
    Set TextFile= FileObject.CreateTextFile(Server.MapPath(FileName))
    TextFile.Write strTemplate
    Set TextFile=Nothing
    %>
    
    至此,HTML已经生成,当然,我们在实际的操作中不会是这么简单的模板,但原理是一样的,无非是读取了多个文件,替换了多个特殊字符而已。生成了HTML其实我们只完成了一半的任务,如果我们在浏览已经生成的文件时发现有错误怎么办,改,呵呵,这就需要我们在生成文件的同时还应该把采集的信息全部保存到数据库,在修改时从数据库读出,修改完成后重新生成HTML覆盖以前存在的文件,达到修改的目的,这个过程就是读出数据然后重复上面的过程,但不同的是文件名是以前的并不是重新生成的,在这里就再重复了。当文章已经没有意义,我们想删除怎么办?这里一是要从数据库里面把对应的记录删除,二是要把对应的文件删除,下面给出删除文件的代码,数据库记录的删除方法相信不用我在罗嗦了吧,呵呵
    
    <%
     ‘FSO删除文件函数
     Public Function Del_File(FileName)
     Set FSO = Server.Createobject("scripting.filesystemobject")
     FileName = Server.Mappath(FileName)
     If FSO.FileExists(FileName) then
     FSO.DeleteFile(FileName)
     End If
     Set FSO=Nothing
     End Function
    %>
    
    函数调用语句:
    <%
    Del_File(FileName)
    %>
    
    到这里,基本上用ASP+模板生成静态HTML的方法就已经介绍完了,这些只是一些简单的示例,在实际应用中要比这些复杂的多,只要我们多想、多写,就能够举一反三,熟练顺利的写出我们需要的文件了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多