ASP生成靜態頁面的方法

2021-04-16 22:00:07 字數 4891 閱讀 7453

asp2html with templet

我希望大家看到該標題就能讓想象到它的功能:

1,with templet意思是,生成的頁面架構將採用某個已設定的模板,在此之前我的一篇教程中介紹過,希望各位在看本教程之前對asp採用模板應熟悉下。(當然,不看也沒有問題,本教程同樣會提及精華部分的:)具體參考:http://www.cnbruce.com/blog/showlog.asp?cat_id=26&log_id=474

2,asp2html。不要我再說asp轉變成html的好處了吧,呵呵,其中最值得知道的就是:靜態html頁和動態頁對伺服器的要求承受能力小得多,同樣,靜態html搜尋機率遠比動態頁面的多得多。

那麼,我現在需要處理的技術問題就是:

1,如何實現模板技術?(先參看下上篇文章吧)

2,如何實現2html技術?

3,如何讓模板技術與2html技術結合?

一、先進行技術原理分析

1,模板技術參看

2,2html技術又該如何實現呢?如何使得asp頁面轉變為html?一般都會想到fso元件,因為該元件能新建任何檔案格式。

那麼其整個執行過程是怎麼樣的呢?

a,提供資訊輸入頁面進行資訊收集;

b,接受資訊值先儲存資料庫,再fso生成檔案;

c,技術性完成任務,顯示剛被建立的html檔案的路徑位址。

該技術的實現過程中有如下幾個難點:

i,fso生成的檔案是直接放在乙個大資料夾下,還是單獨放在某個每日更新的子資料夾中?可能表述不準確,這樣理解吧:相信通過fso生成的檔案隨著時間的推移,檔案會越來越多,管理也會越來越亂……通常你可能看到一些位址諸如

可以分析得出應該是建立了當前日期的資料夾。這樣,一天就是乙個資料夾的頁面內容,檢視管理也就顯得比較合理。

ii,我在試圖通過以上方法建立資料夾的時候,又發現了第二個問題。第一次通過fso建立以當前日期命名的資料夾,沒有問題。當我有新的檔案需要生成時,因為是同乙個程式,所以,其又將會執行建立同樣的資料夾。此時,fso元件會發現該路徑已存在……卡殼-_-! 繼續處理,在首行新增**:

引用:

on error resume next

嘿嘿,達到自欺欺人、掩耳盜鈴的效果。

當然規矩的用法是判斷資料夾的有無

引用:

iii,資料夾是建立了,檔案該如何建立呢?主要也就是檔名的生成。當然這個就需要自己來寫個函式,功能就是如何生成檔名:)

引用:

<%

function makefilename(fname)

fname = fname '前fname為變數,後fname為函式引數引用

fname = replace(fname,"-","")

fname = replace(fname," ","")

fname = replace(fname,":","")

fname = replace(fname,"pm","")

fname = replace(fname,"am","")

fname = replace(fname,"上午","")

fname = replace(fname,"下午","")

makefilename = fname & ".html"

end function

%>

引用函式則:

<%fname = makefilename(now())%>

其實嘛,就是以年月日時分秒命名的檔案。

iv,最後,生成的檔案該如何檢視到?當然需要把生成檔案的路徑儲存的資料庫中,並且新增到相對應的記錄集中了。當然,這在下面的資料庫設計時會提及到。

3,模板技術和2html技術的結合:將模板中特殊**的值替換為從表單接受過來的值,完成模板功能;將最終替換過的所有模板**生成html檔案。需要注意的是:替換應能將輸入資料的格式或者支援ubb的**徹底改變。

二,再進行資料庫設計

目前資料庫的設計需要兩個表:乙個是存放模板資料的;乙個是存放資訊內容的。

1,建立新資料庫asp2html.mdb

2,設計新資料庫表c_moban

欄位m_id(自動編號,主關鍵字);欄位m_html(備註型別)。

並將下列完整的**拷貝至m_html欄位

引用:

$cntoplt;/td>

$cnleftlt;/td>

$cnrightlt;/td>

3,設計新資料庫表c_news

欄位c_id:自動編號,主關鍵字

欄位c_title:文字型別,儲存文章標題

欄位c_content:備註型別,儲存文章內容

欄位c_filepath:文字型別,保持生成檔案的路徑位址

欄位c_time:日期/時間型別,預設值:now()

三,頁面需求設計

1,首先建立乙個存放html頁的資料夾

在檔案同一目錄下,建立資料夾newsfile,夾子內部主要存放生成的html頁面,當然內部還會採用程式方式建立以日期命名的子資料夾,以方便瀏覽以及管理。

2,功能函式頁面lib.asp

引用:

<%

'生成檔名的函式

function makefilename(fname)

fname = fname

fname = replace(fname,"-","")

fname = replace(fname," ","")

fname = replace(fname,":","")

fname = replace(fname,"pm","")

fname = replace(fname,"am","")

fname = replace(fname,"上午","")

fname = replace(fname,"下午","")

makefilename=fname & ".shtml"

end function

'保持資料格式不變的函式

function htmlencode(fstring)

fstring = replace(fstring, ">", ">")

fstring = replace(fstring, "<", "<")

fstring = replace(fstring, chr(32), " ")

fstring = replace(fstring, chr(13), "")

fstring = replace(fstring, chr(10) & chr(10), "

")fstring = replace(fstring, chr(10), "

")htmlencode = fstring

end function

%>

引用:

5,處理資料功能顯示頁面addit.asp

首先是處理接受過來的資料,並將值寫入資料庫;接著將模板**進行引用,並將其中特殊**轉換為接受值,最終通過fso生成html頁面。其中需要注意的還有,生成檔案的路徑位址儲存至資料庫表。

引用:

引用:

<%

set rs = server.createobject ("adodb.recordset")

sql = "select * from c_news order by c_id desc"

rs.open sql,conn,1,1

%>

<%

if rs.eof and rs.bof then

response.write ("暫時還沒有文章,新增")

else

do until rs.eof

%>

<%=rs("c_time")%>

target="a_blank"><%=rs("c_title")%>

[>dell][>edit][add]

<%=htmlencode(rs("c_content"))%>

<%

rs.movenext

loop

end if

%>

<%

rs.close

set rs = nothing

conn.close

set conn=nothing

%>

7,修改資料內容頁change.asp

修改資料內容,同時也需要修改更新對應的html頁面。修改其實就是重新生成檔案,且檔名和之前一樣,類似檔案的覆蓋。

引用:

">

">

8,刪除記錄頁del.asp

同樣!刪除,除了刪除資料庫表中的記錄,與其對應的html頁面也需刪除。**如下:

引用:

四,其它功能

模板管理頁面:

不會每次都是開啟資料庫表進行增加或者修改模板**吧,所以,管理**的頁面程式不能少了,自己搗鼓下應該很簡單的。當然,之前管理員的登入認證程式就不在書中交代了:)還有,如果設計了多個模板,那麼在發表資訊的時候應新增模板選擇單選框,同樣在執行轉換html時,sql選擇的不同m_id了。

不管怎麼說,先把這些技術自己除錯感受下。多多操作,相信「讀書千遍,其意自見」。

ASP生成靜態頁面方法

1 with templet意思是,生成的頁面架構將採用某個已設定的模板,在此之前我的一篇教程中介紹過,希望各位在看本教程之前對asp採用模板應熟悉下。2 asp轉變為html。不要我再說asp轉變成html的好處了吧,其中最值得知道的就是 靜態html頁和動態頁對伺服器的要求承受能力小得多,同樣,...

生成靜態頁面的方法

對於 特別是cms系統中,生成靜態頁面是必不可少的,靜態頁面不用去和資料庫打交道,可以提高頁面的訪問速度。生成靜態頁面的方法一般有 兩種,一種是以模板的形式生成,第二種是直接根據url來生成靜態頁面。以模板形式生成的原理就是字串替換,在.net中已經提供了乙個字串替換的函式 replace 用模板生...

PHP生成靜態頁面的方法

雖然 方法 很多,但使用起來簡便容易的,我覺得還是先判斷已經生成的首頁檔案的生成時間和現有時間之間的差值,如果滿足某個值就開始生成,這種方法比較來得容易,不多說了,開始吧!在開始之前還是提一下三個函式吧 ob start ob end clean ob get contents ob start 是...