01-ZONE ASP Framework 1 使用手冊
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
http://www.01-zone.com/asp-framework/目錄一、快速入門我們通過一個簡單的示例,讓您快速了解 01-ZONE ASP Framework 1 的使用方法。假設我們要設計一個新聞列表顯示程序,將 MS Access 2003 數(shù)據(jù)庫 db.mdb 中新聞表 news 中的記錄列表顯示,并可以通過點擊列表中的標題顯示新聞詳細內容。首先在 wwwroot 目錄下新建四個目錄 db 、styles、images 和 news,db 目錄用來存放 Access 數(shù)據(jù)庫文件,styles 目錄用來存放 CSS 文件,images 目錄用來存放圖片。 將 db.mdb 數(shù)據(jù)庫文件復制到 db 目錄下,打開 config.asp 文件,加入下面的內容,設置數(shù)據(jù)庫連接字符串。 DB.MSAccess "/db/db.mdb" 在 view 目錄里新建一個視圖文件 news_list.htm,此視圖為新聞列表視圖,文件內容如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <link rel="stylesheet" rev="stylesheet" href="../styles/common.css" type="text/css"> <title>新聞列表</title> </head> <body> <img src="../images/logo.gif"><br> <!--Do=1--> <img src="arrow.gif"> <a href="show.asp?ID={id}">{title}</a><br> <!--Loop--> 數(shù)據(jù)庫無記錄 <!--End--> {pager} </body> </html> 其中 {id}、{title}、{pager} 就是視圖標簽,分別代表新聞 ID、新聞標題、分頁代碼。<!--Do=1-->、<!--Loop--> 和 <!--End--> 是一組循環(huán)指令,1 為此組循環(huán)指令的 ID 號。<!--Do=1--> 和 <!--Loop--> 指令間的代碼是循環(huán)體,而 <!--Loop--> 和 <!--End--> 之間的代碼是循環(huán)條件不具備時顯示的內容。 在 view 目錄里新建一個視圖文件 news_show.htm,此視圖為新聞顯示視圖,文件內容如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <link rel="stylesheet" rev="stylesheet" href="../styles/common.css" type="text/css"> <title>新聞顯示</title> </head> <body> <img src="../images/logo.gif"><br> <h1>{title}</h1> <div>{content}</div> </body> </html> 標簽 {title}、{content} 分別代表新聞標題和新聞內容。 在 mod 目錄下創(chuàng)建一個模型文件 news.asp,文件內容如下: <% Class News Private strSql,objRs,strPager Public Property Get Pager() Pager=strPager End Property Private Sub Class_Initialize() Set objRs=Server.CreateObject("ADODB.Recordset") End Sub Private Sub Class_Terminate() Set objRs=Nothing End Sub Public Function List() Dim arrData(),i ReDim arrData(1,9) strSql="select ID,Title from news" DB.List strSql,10,"",ASPName() strPager=DB.Pager If not(DB.RsBof or DB.RsEof) Then For i=0 to 9 arrData(0,i)=DB.Rs("ID") arrData(1,i)=DB.Rs("Title") DB.RsMoveNext If DB.RsEof Then Exit For If i=9 Then Exit For Next ReDim Preserve arrData(1,i) List=arrData Else List="" End If DB.RsClose End Function Public Sub GetRecord() strSql="select * from news where ID='"&Trim(Request("id"))&"'" DB.Record strSql End Sub Public Function Fetch(pstrFieldName) Fetch=DB.Ra(pstrFieldName) End Function End Class %> 這里定義了一個新聞類 News。定義了三個私有變量 strSql、objRs、strPager,分別用來存儲 SQL 語句、RecordSet 對象、分頁代碼。Public Property Get Pager() 定義了類的一個屬性 Pager,此屬性返回 strPager 的值。Private Sub Class_Initialize() 和 Private Sub Class_Terminate() 定義了類的構造函數(shù)和析構函數(shù),在創(chuàng)建類的實例對象時創(chuàng)建一個 RecordSet 對象,在銷毀實例對象時,銷毀 RecordSet 對象。Public Function List() 定義了類的一個公有方法,此方法的返回值是一個數(shù)組或空值。DB.List strSql,10,"",ASPName() 調用庫文件提供的 DB 對象的 List 方法,產(chǎn)生分頁后的記錄集,10 代表每頁 10 條記錄,ASPName() 是庫文件提供的一個函數(shù),返回值為運行此段代碼的 ASP 文件的文件名。DB.Pager 返回分頁代碼,DB.RsBof、DB.RsEof、DB.RsMoveNext、DB.RsClose 用來操作分頁后的記錄集(功能同 RecordSet 對象的 Bof 屬性、Eof 屬性、MoveNext 方法、Close 方法)。Public Sub GetRecord() 定義了類的一個公有方法,調用此方法,將會把一條記錄集存入到 DB 對象的一個私有數(shù)組變量里(通過 DB 對象的 Record 方法),而 Public Function Fetch() 定義的類的公有方法則返回指定字段名所對應的字段值(通過 DB 對象的 Ra 屬性),參數(shù) pstrFieldName 傳入字段名。 在 news 目錄下新建一個控制器文件 list.asp,此頁面實現(xiàn)新聞列表,文件內容如下: <!--#include file="../lib/common.asp"--> <!--#include file="../lib/view.asp"--> <!--#include file="../lib/db.asp"--> <!--#include file="../config.asp"--> <!--#include file="../mod/news.asp"--> <% Dim sobjNews DB.Open Set sobjNews=New News View.SetView "../view/news_list.htm" View.DataLoop 1,Array("{id}","{title}"),sobjNews.List View.Data "{pager}",sobjNews.Pager View.Show Set View=Nothing Set sobjNews=Nothing DB.Close Set DB=Nothing %> 文件開頭用 Include 指令將庫文件 common.asp、view.asp、db.asp 和配置文件 config.asp、模型文件 news.asp 包含進來。然后調用 DB 對象的 Open 方法打開數(shù)據(jù)庫連接,并創(chuàng)建 News 類的一個實例對象。接下來調用庫文件提供的 View 對象的 SetView 方法設定視圖,調用 DataLoop 和 Data 方法替換視圖里的標簽,調用 Show 方法將最終結果返回客戶端。最后是關閉數(shù)據(jù)庫連接和銷毀對象。 在 news 目錄下新建一個控制器文件 show.asp,此頁面實現(xiàn)新聞顯示,文件內容如下: <!--#include file="../lib/common.asp"--> <!--#include file="../lib/view.asp"--> <!--#include file="../lib/db.asp"--> <!--#include file="../config.asp"--> <!--#include file="../mod/news.asp"--> <% Dim sobjNews DB.Open Set sobjNews=New News sobjNews.GetRecord View.SetView "../view/news_show.htm" View.Data "{title}",sobjNews.Fetch("title") View.Data "{content}",sobjNews.Fetch("content") View.Show Set View=Nothing Set sobjNews=Nothing DB.Close Set DB=Nothing %> 文件開頭用 Include 指令將庫文件 common.asp、view.asp、db.asp 和配置文件 config.asp、模型文件 news.asp 包含進來。然后調用 DB 對象的 Open 方法打開數(shù)據(jù)庫連接,并創(chuàng)建 News 類的一個實例對象。接下來調用庫文件提供的 View 對象的 SetView 方法設定視圖,調用 Data 方法替換視圖里的標簽,調用 Show 方法將最終結果返回客戶端。最后是關閉數(shù)據(jù)庫連接和銷毀對象。 通過上面這個簡單的例子,您應該會對 01-ZONE ASP Framework 1 開發(fā)網(wǎng)站有個直觀認識。接下來,我們將詳細介紹庫文件所包含的各個對象的使用方法。 二、庫文件01-ZONE ASP Framework 1 共包含四個庫文件,view.asp 文件包含視圖類并創(chuàng)建了一個類的實例對象 View;db.asp 文件包含數(shù)據(jù)庫類并創(chuàng)建了一個類的實例對象 DB,cache.asp 文件包含緩存類并創(chuàng)建了一個類的實例 Cache,common.asp 文件包含了一些功能函數(shù)。 1. view.asp視圖類的屬性:Html 屬性 Html 可設置、返回視圖的 HTML 代碼。示例代碼如下: View.Html="XXXXXX" ' 設置 View 對象的 Html 屬性值 Response.Write(View.Html) ' 輸出 View 對象的 Html 屬性值 方法 SetView() 用來讀取指定的視圖文件的內容,并賦值給類的一個私有變量(該變量可通過類的 Html 屬性設置或返回值),該方法有一個參數(shù),用來傳遞視圖文件路徑。視圖文件中可用 <!--Include:視圖文件名--> 指令包含其它視圖文件。多次調用 SetView() 方法,即可將被包含的視圖文件讀入到視圖中調用 Include 指令的位置。需要注意的是被包含文件要在包含它的文件通過 SetView() 方法讀取后再通過 SetView() 方法讀取,SetView() 方法的參數(shù)需要是視圖文件相對調用該方法的文件的目錄及文件名,而視圖文件中的 Include 指令里只需給出文件名。示例代碼如下: 視圖文件 main.htm 的代碼: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>主頁面</title> </head> <body> <!--Include:head.htm--> ' 調用 Include 指令包含其它視圖文件 <!--Include:ad.htm--> <h1>{title}</h1> <div>{content}</div> </body> </html> 視圖文件 head.htm 的代碼: <div><a href="">首頁<a> <a href="">新聞<a> <a href="">網(wǎng)摘<a> <a href="">社區(qū)<a></div> 視圖文件 ad.htm 的代碼: <img src="ad.gif" width="760" height="80"> ASP 程序代碼: <% View.SetView "view/main.htm" ' 首先讀取主頁面 main.htm View.SetView "view/head.htm" ' 讀取主頁面包含的視圖文件 head.htm View.SetView "view/ad.htm" ' 讀取主頁面包含的視圖文件 ad.htm %> 方法 Data() 用于在讀取完視圖后,用模型返回的數(shù)據(jù)代替視圖中相應的標簽,該方法有兩個參數(shù),第一個參數(shù)為視圖中的標簽,第二個參數(shù)為模型返回的要替換標簽的數(shù)據(jù)。如果第一個參數(shù)為一個單獨的標簽,則該方法用第二個參數(shù)所傳遞的值替換掉視圖中包含的第一個參數(shù)指定的標簽。還可以通過 Array() 函數(shù)傳遞標簽數(shù)組和替換數(shù)據(jù)數(shù)組,一次完成多個標簽的替換。示例代碼如下: 視圖文件: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>內容顯示</title> </head> <body> <h1>{title}</h1> <div>{content}</div> </body> </html> ASP 程序代碼: <% View.Data "{title}",sstrTitle ' 用模型返回的標題數(shù)據(jù)替換視圖中的 {title} 標簽 View.Data "{content}",sstrContent ' 用模型返回的內容數(shù)據(jù)替換視圖中的 {content} 標簽 ' 或用下面方法一次替換 View.Data Array("{title}","{content}"),Array(sstrTitle,sstrContent) %> 方法 DataLoop() 用于在讀取完視圖后,用模型返回的數(shù)據(jù)代替視圖中相應的標簽,此方法用來實現(xiàn)視圖中塊的循環(huán),該方法有三個參數(shù),第一個參數(shù)為循環(huán)指令 ID,第二個參數(shù)為視圖中的標簽數(shù)組,第三個參數(shù)為模型返回的要替換標簽的數(shù)據(jù)數(shù)組。數(shù)據(jù)數(shù)組必須是一個二維數(shù)組,數(shù)組第一維可以看做數(shù)據(jù)表的列,第二維可以看做數(shù)據(jù)表的行,列的順序必須和標簽數(shù)組元素的順序一一對應。視圖文件中需要使用指令 <!--DO=循環(huán)編號-->...<!--Loop-->...<!--End--> 來設置循環(huán)體。<!--DO=循環(huán)編號-->...<!--Loop--> 之間就是要循環(huán)的內容,<!--Loop-->...<!--End--> 之間是不發(fā)生循環(huán)時(如數(shù)據(jù)庫中無符合條件的記錄)的內容,相對應的,DataLoop() 方法的第三個參數(shù)傳遞的需要是空值。示例代碼如下: 視圖文件: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>列表</title> </head> <body> <!--Do=1--> ' 調用循環(huán)指令 <a href="show.asp?ID={id}">{title}</a><br> ' 要循環(huán)的內容 <!--Loop--> 數(shù)據(jù)庫無記錄 ' 無循環(huán)時的內容 <!--End--> </body> </html> ASP 程序代碼: <% View.Data 1,Array("{id}","{title}"),sarrDataTable ' 使用循環(huán)體 %> 方法 Show() 輸出屬性 Html 的值(也是就存儲視圖內容的對象的私有變量的值),當完成標簽替換后,可調用該方法向客戶端輸出結果頁面。示例代碼如下: View.Show ' 將結果頁面返回客戶端 方法 CreateHtml() 是用來生成靜態(tài)頁面的,Show() 方法是將結果頁面直接輸出到客戶端,而 CreateHtml() 方法則是將結果頁面作為文件存儲。該方法有兩個參數(shù),第一個參數(shù)指定文件保存的目錄,第二個參數(shù)指定文件名。示例代碼如下: View.CreateHtml "news/","1.htm" ' 指定 news 目錄和 1.htm 文件名,注意目錄以“/”結束 2. db.asp數(shù)據(jù)庫類的屬性:Conn、Cmd、Ra、Rs、RsBof、RsEof、Pager 屬性 Conn 返回的是數(shù)據(jù)庫對象 DB 里創(chuàng)建的數(shù)據(jù)庫連接(ADODB.Connection)對象,示例代碼如下: Dim sobjConn ' 定義一個變量 Set sobjConn=DB.Conn ' 為變量賦值為 DB 對象中的數(shù)據(jù)庫連接對象 屬性 Cmd 獲取調用 DB 對象 SP() 方法執(zhí)行存儲過程返回的參數(shù),該屬性有一個參數(shù),用來傳遞存儲過程的參數(shù)名。示例代碼如下: Dim sstrParam ' 定義一個變量 sstrParam=DB.Cmd("output") ' 將存儲過程的 output 參數(shù)返回的值賦值給變量 屬性 Ra 獲取調用 DB 對象 Record() 方法獲取的記錄的字段值,該屬性有一個參數(shù),用來傳遞字段名。示例代碼如下: Dim sstrTitle ' 定義變量 sstrTitle=DB.Ra("Title") ' 將字段名為 Title 的字段值賦值給變量 屬性 Rs 獲取調用 DB 對象 List() 等方法獲取的記錄集當前記錄的字段值,該屬性有一個參數(shù),用來傳遞字段名。示例代碼如下: Dim sstrTitle ' 定義變量 sstrTitle=DB.Rs("Title") ' 將字段名為 Title 的字段值賦值給變量 屬性 RsBof 和 RsEof 分別返回調用 DB 對象 List() 等方法獲取的記錄集的 Bof 屬性和 Eof 屬性。示例代碼如下: If DB.RsBof or DB.RsEof Then Response.Write "無記錄" 屬性 Pager 返回調用 DB 對象 List() 方法產(chǎn)生的分頁代碼,示例代碼如下: Response.Write DB.Pager ' 輸出分頁代碼 MSAccess() 方法和 MSSQL() 方法分別設置連接 Access 數(shù)據(jù)庫和 SQL Server 數(shù)據(jù)庫的連接字符串,MSAccess() 方法有一個參數(shù),用來傳遞數(shù)據(jù)庫文件的路徑,MSSQL() 方法有四個參數(shù),分別傳遞數(shù)據(jù)庫服務器地址、數(shù)據(jù)庫名、數(shù)據(jù)庫用戶名和密碼。示例代碼如下: DB.MSAccess "db/db.mdb" DB.MSSQL "localhost","mydb","user1","12345" Open() 和 Close() 方法用來打開和關閉數(shù)據(jù)庫連接,示例代碼如下: DB.Open ' 打開數(shù)據(jù)庫連接 DB.Close ' 關閉數(shù)據(jù)庫連接 RsClose() 方法用來關閉調用 DB 對象 List() 等方法所返回的記錄集,示例代碼如下: DB.RsClose ' 關閉記錄集 RsMoveNext() 方法用來將調用 DB 對象 List() 等方法所返回的記錄集的指針后移一位,示例代碼如下: DB.RsMoveNext ' 將指針后移一位 List() 方法用來產(chǎn)生一個分頁記錄集,并將分頁代碼存入 DB 對象的私有變量,可以通過 Pager 屬性獲取。Rs、RsBof、RsEof 屬性及 RsClose()、RsMoveNext() 方法用來配合該方法。該方法有四個參數(shù),分別傳遞 SQL 語句、每頁多少條記錄、查詢串(用 Array() 函數(shù)來封裝,奇數(shù)位元素為參數(shù)名,偶數(shù)位元素為參數(shù)值)、實現(xiàn)分頁功能的頁面的文件名。示例代碼如下: Dim sstrSql,i DB.Open sstrSql="select ID,Title from news where fenlei='"&Request("fenlei")&"'" DB.List sstrSql,10,Array("fenlei","國內新聞"),"news_list.asp" If DB.RsBof or DB.RsEof Then Response.Write "無記錄" Else For i=0 to 9 If DB.RsEof Then Exit For Response.Write "<a href=""show.asp?ID="&DB.Rs("ID")&""">"&DB.Rs("Title")&"</a><br>" DB.RsMoveNext Next End If DB.RsClose Response.Write DB.Pager Record() 方法用來獲取一條記錄,該方法有一個參數(shù),用來傳遞 SQL 語句字符串,Ra 屬性用來配合此方法,示例代碼如下: Dim sstrSql sstrSql="select Title from news where ID="&Request("ID") ' 從數(shù)據(jù)庫中獲取指定 ID 的一條新聞記錄 DB.Record sstrSql Response.Write DB.Ra("Title") Insert() 方法用來向數(shù)據(jù)庫添加一條記錄,該方法有兩個參數(shù),第一個參數(shù)為數(shù)據(jù)表名,第二個參數(shù)為一個數(shù)組,數(shù)組奇數(shù)位元素為字段名,偶數(shù)位元素為字段值。示例代碼如下: DB.Insert "news",Array("ID",1,"Title","這里是新聞標題","Content","這里是新聞內容") Update() 方法用來更新一條記錄,該方法有三個參數(shù),第一個參數(shù)為數(shù)據(jù)表名,第二個參數(shù)為更新條件,第三個參數(shù)為一個數(shù)組,數(shù)組奇數(shù)位元素為字段名,偶數(shù)位元素為字段值。示例代碼如下: DB.Update "news","ID=1",Array("Title","這里是新聞標題","Content","這里是新聞內容") Delete() 方法用來刪除符合條件的記錄,該方法有兩個參數(shù),第一個參數(shù)為表名,第二個參數(shù)為刪除條件,示例代碼如下: DB.Delete "news","ID=1" Exec() 方法用來執(zhí)行一條 SQL 語句,該方法有一個參數(shù),參數(shù)為要執(zhí)行的 SQL 語句,示例代碼如下: DB.Exec "delete from news where ID<10" SP() 方法用來執(zhí)行存儲過程,該方法有三個參數(shù),第一個參數(shù)為存儲過程名;第二個參數(shù)指定是否返回記錄集,0 為不返回,1 為返回,返回的記錄集和 List() 方法相同,可配合使用 DB.RsEof 等屬性,DB.RsMoveNext() 等方法;第三個參數(shù)是存儲過程參數(shù)數(shù)組。示例代碼如下: DB.SP "updatenews",0,Array("""@ID"",adUnsignedInt,adParamInput,,1","""@Title"",adVarWChar,adParamInput,10,""新聞標題""") 3. cache.asp緩存類的屬性:Content、Valid 屬性 Content 返回緩存內容,示例代碼如下: Response.Write Cache.Content ' 輸出緩存內容 屬性 Valid 返回指定緩存是否可用,該屬性需要傳遞三個參數(shù),第一個參數(shù)是緩存名,第二個參數(shù)是緩存有效期(單位是秒),第三個參數(shù)是緩存類型(1 為內存緩存,2 為文件緩存)。示例代碼如下: If Cache.Valid("NewsList",600,1) Then Response.Write Cache.Content Add() 方法用來新增緩存對象,該方法有三個參數(shù),第一個參數(shù)為緩存名,第二個參數(shù)為緩存內容,第三個參數(shù)為緩存類型(1 為內存緩存,2 為文件緩存)。示例代碼如下: Cache.Add "bbsname","某某論壇",1 Remove() 方法用來刪除緩存對象,該方法有兩個參數(shù),第一個參數(shù)為緩存名,第二個參數(shù)為緩存類型(1 為內存緩存,2 為文件緩存)。示例代碼如下: Cache.Remove "newslist",1 4. common.aspPrint 函數(shù)用來向客戶端輸出指定內容,該函數(shù)有一個參數(shù),用來傳遞要輸出的內容,示例代碼如下: Print "hello" Echo 函數(shù)的用法和 Print 相同,示例代碼如下: Echo "hello" Die 函數(shù)用來終結程序的運行,該函數(shù)有一個參數(shù),用來傳遞終結程序時向客戶端輸出的信息,示例代碼如下: Die "發(fā)生異常" ' 終結程序并向客戶端發(fā)出信息 Die "" ' 終結程序,不向客戶端發(fā)出任何信息 Form 函數(shù)用來獲取表單數(shù)據(jù),該函數(shù)有一個參數(shù),用來傳遞表單元素名,示例代碼如下: Dim sstrTitle sstrTitle=Form("title") Query 函數(shù)用來獲取查詢串參數(shù)值,該函數(shù)有一個參數(shù),用來傳遞查詢串參數(shù)名,示例代碼如下: Dim sstrID sstrID=Query("id") SetCookie 函數(shù)用來設置 Cookie,該函數(shù)有兩個參數(shù),第一個參數(shù)為 Cookie 名,第二個參數(shù)為 Cookie 值,示例代碼如下: SetCookie "name","Bill" SetCookiePath 函數(shù)用來設置 Cookie 路徑,該函數(shù)有兩個參數(shù),第一個參數(shù)為 Cookie 名,第二個參數(shù)為 Cookie 路徑,示例代碼如下: SetCookiePath "name","/" SetCookieExpires 函數(shù)用來設置 Cookie 有效期,該函數(shù)有兩個參數(shù),第一個參數(shù)為 Cookie 名,第二個參數(shù)為 Cookie 有效期,示例代碼如下: SetCookieExpires "name","January 1, 2000" SetCookieDomain 函數(shù)用來設置 Cookie 域,該函數(shù)有兩個參數(shù),第一個參數(shù)為 Cookie 名,第二個參數(shù)為 Cookie 域,示例代碼如下: SetCookieDomain "name","www.mydomain.com" GetCookie 函數(shù)用來獲取 Cookie 值,該函數(shù)有一個參數(shù),用來傳遞 Cookie 名,示例代碼如下: Dim sstrName sstrName=GetCookie("name") Referer 函數(shù)用來獲取訪問來源頁面,示例代碼如下: Response.Write "您是從 "&Referer()&" 來到此頁的" UserIP 函數(shù)獲取客戶端的 IP 地址,示例代碼如下: Response.Write "您的 IP 地址是:"&UserIP() ASPName 函數(shù)獲取當前所運行的 ASP 頁面的文件名,示例代碼如下: Response.Write "當前頁面是:"&ASPName() RealPath 函數(shù)獲取指定虛擬路徑的實際路徑,該函數(shù)有一個參數(shù),用來傳遞虛擬路徑,示例代碼如下: Dim sstrRealPath sstrRealPath=RealPath("/images/") Bytes 函數(shù)獲取指定字符串的字節(jié)數(shù),該函數(shù)有一個參數(shù),用來傳遞字符串,示例代碼如下: Dim sintLength sintLength=Bytes("hello") SqlInj 函數(shù)用來判斷字符串里是否含有 SQL 注入漏洞攻擊內容,該函數(shù)有一個參數(shù),用來傳遞要檢驗的字符串,示例代碼如下: If SqlInj("abc") Then Response.Write "字符串里含有攻擊內容" HtmlEncode 函數(shù)用來對字符串進行 HTML 編碼,該函數(shù)有一個參數(shù),用來傳遞要編碼的字符串,示例代碼如下: sstrTitle=HtmlEncode(sstrTitle) 該文章在 2011/2/26 17:52:25 編輯過 |
關鍵字查詢
相關文章
正在查詢... |