《ASP生成HTML(ASP模板转成静态HTML)》由会员分享,可在线阅读,更多相关《ASP生成HTML(ASP模板转成静态HTML)(17页珍藏版)》请在金锄头文库上搜索。
1、ASP 生成 HTML(ASP+模板转成静态 HTML)我希望大家看到该标题就能让想象到它的功能:ASP 生成 HTML(ASP+模板转成静态 HTML)1,WITH TEMPLET 意思是,生成的页面架构将采用某个已设定的模板,在此之前我的一篇教程中介绍过,希望各位在看本教程之前对 ASP 采用模板应熟悉下。 (当然,不看也没有问题,本教程同样会提及精华部分的:)2,ASP2HTML。不要我再说 ASP 转变成 HTML 的好处了吧,呵呵,其中最值得知道的就是:静态 HTML 页和动态页对服务器的要求承受能力小得多,同样,静态 HTML 搜索几率远比动态页面的多得多。 那么,我现在需要处理的
2、技术问题就是:1,如何实现模板技术?(先参看下上篇文章吧)2,如何实现 2HTML 技术?3,如何让模板技术与 2HTML 技术结合?一、先进行技术原理分析1,模板技术2,2HTML 技术又该如何实现呢?如何使得 ASP 页面转变为 HTML?一般都会想到 FSO 组件,因为该组件能新建任何文件格式。那么其整个运行过程是怎么样的呢?a,提供信息输入页面进行信息收集;b,接受信息值先保存数据库,再 FSO 生成文件;c,技术性完成任务,显示刚被创建的 HTML 文件的路径地址。该技术的实现过程中有如下几个难点:i,FSO 生成的文件是直接放在一个大文件夹下,还是单独放在某个每日更新的子文件夹中?
3、可能表述不准确,这样理解吧:相信通过 FSO 生成的文件随着时间的推移,文件会越来越多,管理也会越来越乱通常你可能看到一些地址诸如 http:/ 可以分析得出应该是建立了当前日期的文件夹。这样,一天就是一个文件夹的页面内容,查看管理也就显得比较合理。ii,我在试图通过以上方法建立文件夹的时候,又发现了第二个问题。第一次通过 FSO 建立以当前日期命名的文件夹,没有问题。当我有新的文件需要生成时,因为是同一个程序,所以,其又将会执行建立同样的文件夹。此时,FSO 组件会发现该路径已存在卡壳-_-! 继续处理,在首行添加代码:On Error Resume Next嘿嘿,达到自欺欺人、掩耳盗铃的效
4、果。iii,文件夹是建立了,文件该如何建立呢?主要也就是文件名的生成。当然这个就需要自己来写个函数,功能就是如何生成文件名:)引用函数则:其实嘛,就是以年月日时分秒命名的文件。iv,最后,生成的文件该如何查看到?当然需要把生成文件的路径保存的数据库中,并且添加到相对应的记录集中了。当然,这在下面的数据库设计时会提及到。3,模板技术和 2HTML 技术的结合:将模板中特殊代码的值替换为从表单接受过来的值,完成模板功能;将最终替换过的所有模板代码生成 HTML 文件。需要注意的是:替换应能将输入数据的格式或者支持 UBB 的代码彻底改变。二,再进行数据库设计目前数据库的设计需要两个表:一个是存放模
5、板数据的;一个是存放信息内容的。1,建立新数据库 asp2html.mdb2,设计新数据库表 c_moban字段 m_id(自动编号,主关键字) ;字段 m_html(备注类型) 。并将下列完整的代码拷贝至 m_html 字段Cnbruce.Com | ASP2HTML TEST$cntop$cnleft$cnright$3,设计新数据库表 c_news字段 c_id:自动编号,主关键字字段 c_title:文本类型,保存文章标题字段 c_content:备注类型,保存文章内容字段 c_filepath:文本类型,保持生成文件的路径地址字段 c_time:日期/时间类型,默认值:Now()三,
6、页面需求设计1,首先建立一个存放 HTML 页的文件夹在文件同一目录下,建立文件夹 newsfile,夹子内部主要存放生成的 HTML 页面,当然内部还会采用程序方式建立以日期命名的子文件夹,以方便浏览以及管理。2,功能函数页面 lib.asp, ) fString = replace(fString, ) fString = Replace(fString, CHR(10), )If Not IsNull(fString) ThenfString = trim(fString)fString = replace(fString, ;, ;) 分号过滤fString = replace(fSt
7、ring, -, ) -过滤fString = replace(fString, %20, ) 特殊字符过滤fString = replace(fString, =, ) =过滤fString = replace(fString, , )fString = replace(fString, )fString = Replace(fString, CHR(10), )htmlencode = fString End If End FunctionFunction uhtmlencode(fString) If not isnull(fString) then fString = Replace(
8、fString, , CHR(32) fString = Replace(fString, , CHR(9) fString = Replace(fString, , CHR(34) fString = Replace(fString, , CHR(39) fString = Replace(fString, , CHR(13) fString = Replace(fString, , CHR(10) & CHR(10) fString = Replace(fString, , CHR(10) uhtmlencode = fString End If End Function%3,数据库连接页
9、面 conn.asp完成数据库的字符串连接方法4,信息输入页面 add.html其实很简单:)就是表单嘛。注意 action 是跳转到 addit.asptitle:Content:5,处理数据功能显示页面 addit.asp首先是处理接受过来的数据,并将值写入数据库;接着将模板代码进行引用,并将其中特殊代码转换为接受值,最终通过 FSO 生成 HTML 页面。其中需要注意的还有,生成文件的路径地址保存至数据库表。文章添加成功,浏览6,显示数据库表记录,并做指向 HTML 页的链接:showit.asp添加)elseDo Until rs.EOF%target=a_blankDellEditA
10、dd7,修改数据内容页 change.asp修改数据内容,同时也需要修改更新对应的 HTML 页面。修改其实就是重新生成文件,且文件名和之前一样,类似文件的覆盖。 thenSet rs = Server.CreateObject (ADODB.Recordset)sql=select * from c_news where c_id=&idrs.Open sql,conn,1,1c_id=rs(c_id)c_filepath=rs(c_filepath)c_title=rs(c_title)c_content=rs(c_content)end if%title:Content:8,删除记录页 del.asp同样!删除,除了删除数据库表中的记录,与其对应的 HTML 页面也需删除。代码如下:四,其它功能模板管理页面:不会每次都是打开数据库表进行增加或者修改模板代码吧,所以,管理代码的页面程序不能少了,自己捣鼓下应该很简单的。当然,之前管理员的登录认证程序就不在书中交代了:)还有,如果设计了多个模板,那么在发表信息的时候应添加模板选择单选框,同样在执行转换 HTML 时,SQL 选择的不同 m_id 了。