ASP:关于生成HTML文件的新闻系统
生活随笔
收集整理的這篇文章主要介紹了
ASP:关于生成HTML文件的新闻系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
| 一般的傳遞ID值的新聞系統見得比較多,制作起來也不是很復雜。 但是我們在新浪或是其它的門戶類網站看到到的新聞不是用ID傳遞的,而是一個HTML或是Shtml文件,難道手工加上去的嗎?當然不是了,其實這用到的是ASP中的FileSystemObject對象的方法。 接著往下說說如何實現這一功能。 首先考慮文件名的格式及文件的存放路徑。 路徑可以這樣假設: 存放的路徑:如果把所有的HTML文件或是所有的SHTML文件都放在同一目錄下,當同時訪問的人增多以后,勢必會影響服務器正常的運行,所以明智的方法就是把這些文件按加入的日期進行分類。 文件名的格式: 為了避免出現重名的文件,一般的命名規則是當天的日期+時間+隨機數+后綴名。 function makefilename() fname = now() fname = replace(fname,"-","") fname = replace(fname," ","") fname = replace(fname,":","") fname = replace(fname,"PM","") fname = replace(fname,"AM","") fname = replace(fname,"上午","") fname = replace(fname,"下午","") randomize ranNum=int(90000*rnd)+10000 '生成隨機數 fname = fname&fanNum makefilename=fname & ".shtml" end function 這段函數就可以生成所需要的文件名及生成的文件的后綴名,當前的后綴名為.shtml,您也可以改成HTML或是ASP。 剛提到的是文件的命名,現在再來說一下文件的存放路徑! 前面提到了,每個文件按加入的日期進行分類,那如何確定路徑呢?同樣用FSO生成。 用FSO中的folderExists方面來判斷目錄是否存在,如果存在就不需要重建立了,只需將HTML寫入該目錄下(這是后話了)。如果folderExists方法取得的值為false則表示目錄不存在,就要用createfolder方法生成了。 formPath=datepart("yyyy",now())&"_"&datepart("m",now())&"_"&datepart("d",now()) '建立目錄名,生成的文件將按存放在此處 set objfso = server.createobject("scripting.filesystemobject") if not objfso.folderexists(server.mappath(formPath)) then '如果該目錄不存在 objfso.createfolder(server.mappath(formPath)) '創建一個文件夾 end if set objfso = nothing 目錄就這樣建立了。每次FSO生成文件時都進行判斷一下,不過這樣不知道會不會影響效率,大家可以有什么好的想法可以談一談。 先看一個模板: <html> <head> <title>檸檬樹下----[title]</title> </head> <body> [news_title] <br> 作者:[author] 來源:[source] 加入日期:[add_time] <br> [content] </body> </html> 這是一個最簡單的模板了,里面的用[]括起來的是什么東東呢?那就是即將要被替換的新聞標題、內容、作者等等。 先不管這個模板漂不漂亮,先寫入數據表,在后面的用的喲! 下面將談談核心部分了,如何生成HTML的呢? 把前面的模板寫入數據表,這里給出表的結構,當然是簡單的一種 Template表 T_ID 'ID值,自動編號 T_name '模板名稱 T_content '模板代碼 在編輯器中寫好新聞后,在處理頁里的執行過程是這樣的: 1、取得表單中的各變量值 2、從Template表中取得模板代碼 3、將模板中的[]括起來的東東替換成相應的表單值,如[autor]就替換成表單中取得的作者名 4、FSO生成HTML文件 5、將新聞寫入數據表(為什么要寫入?以便以后的編輯) '這里查詢模板 strsql = "select * from templet where T_name='"&templet_name&"' " objrs.open strsql,conn,1,1 content = objrs("content") objrs.close '開始替換,其中的title/strcontet都是從表單中取得的,前面的代碼略去 content = replace(content,"[title]",title) content = replace(content,"[content]",strcontent) content = replace(content,"[source]",source) content = replace(content,"[author]",author) content = replace(content,"[add_time]",now()) '然后將新聞寫入數據表 strsql = "insert into news---------------" conn.execute strsql,intno '執行之 if intno <> 0 then '如果執行結果不為0表示執行成功,則開始寫入了 set objfso = server.createobject("scripting.filesystemobject") formPath=datepart("yyyy",now())&"_"&datepart("m",now())&"_"&datepart("d",now()) '建立目錄名,生成的文件將按存放在此處 filename = server.mappath(formpath& "/" &makefilename) if objfso.folderexists(server.mappath(formPath)) then '如果該目錄存在 Set file = objfso.CreateTextFile(formpath&"/"&fname) file.WriteLine content file.close else objfso.createfolder(server.mappath(formPath)) '創建一個文件夾 Set file = objfso.CreateTextFile(formpath&"/"&fname) file.WriteLine content file.close end if set objfso = nothing else response.write "寫入數據失敗!" response.end end if 編輯時無非就是重新從數據表中調用該新聞內容,update后重新用FSO寫入! |
| ? |
總結
以上是生活随笔為你收集整理的ASP:关于生成HTML文件的新闻系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript网页精华代码集
- 下一篇: ASP:在静态页面中显示文章被阅读的次数