狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

01-ZONE ASP Framework 1 使用手冊

admin
2011年2月26日 17:52 本文熱度 3029

http://www.01-zone.com/asp-framework/


目錄



一、快速入門


我們通過一個簡單的示例,讓您快速了解 01-ZONE ASP Framework 1 的使用方法。假設我們要設計一個新聞列表顯示程序,將 MS Access 2003 數據庫 db.mdb 中新聞表 news 中的記錄列表顯示,并可以通過點擊列表中的標題顯示新聞詳細內容。首先在 wwwroot 目錄下新建四個目錄 db 、styles、images 和 news,db 目錄用來存放 Access 數據庫文件,styles 目錄用來存放 CSS 文件,images 目錄用來存放圖片。


將 db.mdb 數據庫文件復制到 db 目錄下,打開 config.asp 文件,加入下面的內容,設置數據庫連接字符串。


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-->
數據庫無記錄
<!--End-->
{pager}
</body>
</html>

其中 {id}、{title}、{pager} 就是視圖標簽,分別代表新聞 ID、新聞標題、分頁代碼。<!--Do=1-->、<!--Loop--> 和 <!--End--> 是一組循環指令,1 為此組循環指令的 ID 號。<!--Do=1--> 和 <!--Loop--> 指令間的代碼是循環體,而 <!--Loop--> 和 <!--End--> 之間的代碼是循環條件不具備時顯示的內容。


在 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 目錄下創建一個模型文件 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() 定義了類的構造函數和析構函數,在創建類的實例對象時創建一個 RecordSet 對象,在銷毀實例對象時,銷毀 RecordSet 對象。Public Function List() 定義了類的一個公有方法,此方法的返回值是一個數組或空值。DB.List strSql,10,"",ASPName() 調用庫文件提供的 DB 對象的 List 方法,產生分頁后的記錄集,10 代表每頁 10 條記錄,ASPName() 是庫文件提供的一個函數,返回值為運行此段代碼的 ASP 文件的文件名。DB.Pager 返回分頁代碼,DB.RsBof、DB.RsEof、DB.RsMoveNext、DB.RsClose 用來操作分頁后的記錄集(功能同 RecordSet 對象的 Bof 屬性、Eof 屬性、MoveNext 方法、Close 方法)。Public Sub GetRecord() 定義了類的一個公有方法,調用此方法,將會把一條記錄集存入到 DB 對象的一個私有數組變量里(通過 DB 對象的 Record 方法),而 Public Function Fetch() 定義的類的公有方法則返回指定字段名所對應的字段值(通過 DB 對象的 Ra 屬性),參數 pstrFieldName 傳入字段名。


在 news 目錄下新建一個控制器文件 list.asp,此頁面實現新聞列表,文件內容如下:


<!--#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 方法打開數據庫連接,并創建 News 類的一個實例對象。接下來調用庫文件提供的 View 對象的 SetView 方法設定視圖,調用 DataLoop 和 Data 方法替換視圖里的標簽,調用 Show 方法將最終結果返回客戶端。最后是關閉數據庫連接和銷毀對象。


在 news 目錄下新建一個控制器文件 show.asp,此頁面實現新聞顯示,文件內容如下:


<!--#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 方法打開數據庫連接,并創建 News 類的一個實例對象。接下來調用庫文件提供的 View 對象的 SetView 方法設定視圖,調用 Data 方法替換視圖里的標簽,調用 Show 方法將最終結果返回客戶端。最后是關閉數據庫連接和銷毀對象。


通過上面這個簡單的例子,您應該會對 01-ZONE ASP Framework 1 開發網站有個直觀認識。接下來,我們將詳細介紹庫文件所包含的各個對象的使用方法。


二、庫文件


01-ZONE ASP Framework 1 共包含四個庫文件,view.asp 文件包含視圖類并創建了一個類的實例對象 View;db.asp 文件包含數據庫類并創建了一個類的實例對象 DB,cache.asp 文件包含緩存類并創建了一個類的實例 Cache,common.asp 文件包含了一些功能函數。


1. view.asp


視圖類的屬性:Html
視圖類的方法:SetView()、Data()、DataLoop()、Show()、CreateHtml()


屬性 Html 可設置、返回視圖的 HTML 代碼。示例代碼如下:


View.Html="XXXXXX" ' 設置 View 對象的 Html 屬性值
Response.Write(View.Html) ' 輸出 View 對象的 Html 屬性值

方法 SetView() 用來讀取指定的視圖文件的內容,并賦值給類的一個私有變量(該變量可通過類的 Html 屬性設置或返回值),該方法有一個參數,用來傳遞視圖文件路徑。視圖文件中可用 <!--Include:視圖文件名--> 指令包含其它視圖文件。多次調用 SetView() 方法,即可將被包含的視圖文件讀入到視圖中調用 Include 指令的位置。需要注意的是被包含文件要在包含它的文件通過 SetView() 方法讀取后再通過 SetView() 方法讀取,SetView() 方法的參數需要是視圖文件相對調用該方法的文件的目錄及文件名,而視圖文件中的 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="">網摘<a> <a href="">社區<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() 用于在讀取完視圖后,用模型返回的數據代替視圖中相應的標簽,該方法有兩個參數,第一個參數為視圖中的標簽,第二個參數為模型返回的要替換標簽的數據。如果第一個參數為一個單獨的標簽,則該方法用第二個參數所傳遞的值替換掉視圖中包含的第一個參數指定的標簽。還可以通過 Array() 函數傳遞標簽數組和替換數據數組,一次完成多個標簽的替換。示例代碼如下:


視圖文件:
<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 ' 用模型返回的標題數據替換視圖中的 {title} 標簽
View.Data "{content}",sstrContent ' 用模型返回的內容數據替換視圖中的 {content} 標簽
' 或用下面方法一次替換
View.Data Array("{title}","{content}"),Array(sstrTitle,sstrContent)
%>

方法 DataLoop() 用于在讀取完視圖后,用模型返回的數據代替視圖中相應的標簽,此方法用來實現視圖中塊的循環,該方法有三個參數,第一個參數為循環指令 ID,第二個參數為視圖中的標簽數組,第三個參數為模型返回的要替換標簽的數據數組。數據數組必須是一個二維數組,數組第一維可以看做數據表的列,第二維可以看做數據表的行,列的順序必須和標簽數組元素的順序一一對應。視圖文件中需要使用指令 <!--DO=循環編號-->...<!--Loop-->...<!--End--> 來設置循環體。<!--DO=循環編號-->...<!--Loop--> 之間就是要循環的內容,<!--Loop-->...<!--End--> 之間是不發生循環時(如數據庫中無符合條件的記錄)的內容,相對應的,DataLoop() 方法的第三個參數傳遞的需要是空值。示例代碼如下:


視圖文件:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>列表</title>
</head>
<body>
<!--Do=1--> ' 調用循環指令
<a href="show.asp?ID={id}">{title}</a><br> ' 要循環的內容
<!--Loop-->
數據庫無記錄 ' 無循環時的內容
<!--End-->
</body>
</html>

ASP 程序代碼:
<%
View.Data 1,Array("{id}","{title}"),sarrDataTable ' 使用循環體
%>

方法 Show() 輸出屬性 Html 的值(也是就存儲視圖內容的對象的私有變量的值),當完成標簽替換后,可調用該方法向客戶端輸出結果頁面。示例代碼如下:


View.Show ' 將結果頁面返回客戶端

方法 CreateHtml() 是用來生成靜態頁面的,Show() 方法是將結果頁面直接輸出到客戶端,而 CreateHtml() 方法則是將結果頁面作為文件存儲。該方法有兩個參數,第一個參數指定文件保存的目錄,第二個參數指定文件名。示例代碼如下:


View.CreateHtml "news/","1.htm" ' 指定 news 目錄和 1.htm 文件名,注意目錄以“/”結束

2. db.asp


數據庫類的屬性:Conn、Cmd、Ra、Rs、RsBof、RsEof、Pager
數據庫類的方法:MSAccess()、MSSQL()、Open()、Close()、RsClose()、RsMoveNext()、List()、Record()、Insert()、Update()、Delete()、Exec()、SP()


屬性 Conn 返回的是數據庫對象 DB 里創建的數據庫連接(ADODB.Connection)對象,示例代碼如下:


Dim sobjConn ' 定義一個變量
Set sobjConn=DB.Conn ' 為變量賦值為 DB 對象中的數據庫連接對象

屬性 Cmd 獲取調用 DB 對象 SP() 方法執行存儲過程返回的參數,該屬性有一個參數,用來傳遞存儲過程的參數名。示例代碼如下:


Dim sstrParam ' 定義一個變量
sstrParam=DB.Cmd("output") ' 將存儲過程的 output 參數返回的值賦值給變量

屬性 Ra 獲取調用 DB 對象 Record() 方法獲取的記錄的字段值,該屬性有一個參數,用來傳遞字段名。示例代碼如下:


Dim sstrTitle ' 定義變量
sstrTitle=DB.Ra("Title") ' 將字段名為 Title 的字段值賦值給變量

屬性 Rs 獲取調用 DB 對象 List() 等方法獲取的記錄集當前記錄的字段值,該屬性有一個參數,用來傳遞字段名。示例代碼如下:


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() 方法產生的分頁代碼,示例代碼如下:


Response.Write DB.Pager ' 輸出分頁代碼

MSAccess() 方法和 MSSQL() 方法分別設置連接 Access 數據庫和 SQL Server 數據庫的連接字符串,MSAccess() 方法有一個參數,用來傳遞數據庫文件的路徑,MSSQL() 方法有四個參數,分別傳遞數據庫服務器地址、數據庫名、數據庫用戶名和密碼。示例代碼如下:


DB.MSAccess "db/db.mdb"
DB.MSSQL "localhost","mydb","user1","12345"

Open() 和 Close() 方法用來打開和關閉數據庫連接,示例代碼如下:


DB.Open ' 打開數據庫連接
DB.Close ' 關閉數據庫連接

RsClose() 方法用來關閉調用 DB 對象 List() 等方法所返回的記錄集,示例代碼如下:


DB.RsClose ' 關閉記錄集

RsMoveNext() 方法用來將調用 DB 對象 List() 等方法所返回的記錄集的指針后移一位,示例代碼如下:


DB.RsMoveNext ' 將指針后移一位

List() 方法用來產生一個分頁記錄集,并將分頁代碼存入 DB 對象的私有變量,可以通過 Pager 屬性獲取。Rs、RsBof、RsEof 屬性及 RsClose()、RsMoveNext() 方法用來配合該方法。該方法有四個參數,分別傳遞 SQL 語句、每頁多少條記錄、查詢串(用 Array() 函數來封裝,奇數位元素為參數名,偶數位元素為參數值)、實現分頁功能的頁面的文件名。示例代碼如下:


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() 方法用來獲取一條記錄,該方法有一個參數,用來傳遞 SQL 語句字符串,Ra 屬性用來配合此方法,示例代碼如下:


Dim sstrSql
sstrSql="select Title from news where ID="&Request("ID") ' 從數據庫中獲取指定 ID 的一條新聞記錄
DB.Record sstrSql
Response.Write DB.Ra("Title")

Insert() 方法用來向數據庫添加一條記錄,該方法有兩個參數,第一個參數為數據表名,第二個參數為一個數組,數組奇數位元素為字段名,偶數位元素為字段值。示例代碼如下:


DB.Insert "news",Array("ID",1,"Title","這里是新聞標題","Content","這里是新聞內容")

Update() 方法用來更新一條記錄,該方法有三個參數,第一個參數為數據表名,第二個參數為更新條件,第三個參數為一個數組,數組奇數位元素為字段名,偶數位元素為字段值。示例代碼如下:


DB.Update "news","ID=1",Array("Title","這里是新聞標題","Content","這里是新聞內容")

Delete() 方法用來刪除符合條件的記錄,該方法有兩個參數,第一個參數為表名,第二個參數為刪除條件,示例代碼如下:


DB.Delete "news","ID=1"

Exec() 方法用來執行一條 SQL 語句,該方法有一個參數,參數為要執行的 SQL 語句,示例代碼如下:


DB.Exec "delete from news where ID<10"

SP() 方法用來執行存儲過程,該方法有三個參數,第一個參數為存儲過程名;第二個參數指定是否返回記錄集,0 為不返回,1 為返回,返回的記錄集和 List() 方法相同,可配合使用 DB.RsEof 等屬性,DB.RsMoveNext() 等方法;第三個參數是存儲過程參數數組。示例代碼如下:


DB.SP "updatenews",0,Array("""@ID"",adUnsignedInt,adParamInput,,1","""@Title"",adVarWChar,adParamInput,10,""新聞標題""")

3. cache.asp


緩存類的屬性:Content、Valid
緩存類的方法:Add()、Remove()


屬性 Content 返回緩存內容,示例代碼如下:


Response.Write Cache.Content ' 輸出緩存內容

屬性 Valid 返回指定緩存是否可用,該屬性需要傳遞三個參數,第一個參數是緩存名,第二個參數是緩存有效期(單位是秒),第三個參數是緩存類型(1 為內存緩存,2 為文件緩存)。示例代碼如下:


If Cache.Valid("NewsList",600,1) Then Response.Write Cache.Content

Add() 方法用來新增緩存對象,該方法有三個參數,第一個參數為緩存名,第二個參數為緩存內容,第三個參數為緩存類型(1 為內存緩存,2 為文件緩存)。示例代碼如下:


Cache.Add "bbsname","某某論壇",1

Remove() 方法用來刪除緩存對象,該方法有兩個參數,第一個參數為緩存名,第二個參數為緩存類型(1 為內存緩存,2 為文件緩存)。示例代碼如下:


Cache.Remove "newslist",1

4. common.asp


Print 函數用來向客戶端輸出指定內容,該函數有一個參數,用來傳遞要輸出的內容,示例代碼如下:


Print "hello"

Echo 函數的用法和 Print 相同,示例代碼如下:


Echo "hello"

Die 函數用來終結程序的運行,該函數有一個參數,用來傳遞終結程序時向客戶端輸出的信息,示例代碼如下:


Die "發生異常" ' 終結程序并向客戶端發出信息
Die "" ' 終結程序,不向客戶端發出任何信息

Form 函數用來獲取表單數據,該函數有一個參數,用來傳遞表單元素名,示例代碼如下:


Dim sstrTitle
sstrTitle=Form("title")

Query 函數用來獲取查詢串參數值,該函數有一個參數,用來傳遞查詢串參數名,示例代碼如下:


Dim sstrID
sstrID=Query("id")

SetCookie 函數用來設置 Cookie,該函數有兩個參數,第一個參數為 Cookie 名,第二個參數為 Cookie 值,示例代碼如下:


SetCookie "name","Bill"

SetCookiePath 函數用來設置 Cookie 路徑,該函數有兩個參數,第一個參數為 Cookie 名,第二個參數為 Cookie 路徑,示例代碼如下:


SetCookiePath "name","/"

SetCookieExpires 函數用來設置 Cookie 有效期,該函數有兩個參數,第一個參數為 Cookie 名,第二個參數為 Cookie 有效期,示例代碼如下:


SetCookieExpires "name","January 1, 2000"

SetCookieDomain 函數用來設置 Cookie 域,該函數有兩個參數,第一個參數為 Cookie 名,第二個參數為 Cookie 域,示例代碼如下:


SetCookieDomain "name","www.mydomain.com"

GetCookie 函數用來獲取 Cookie 值,該函數有一個參數,用來傳遞 Cookie 名,示例代碼如下:


Dim sstrName
sstrName=GetCookie("name")

Referer 函數用來獲取訪問來源頁面,示例代碼如下:


Response.Write "您是從 "&Referer()&" 來到此頁的"

UserIP 函數獲取客戶端的 IP 地址,示例代碼如下:


Response.Write "您的 IP 地址是:"&UserIP()

ASPName 函數獲取當前所運行的 ASP 頁面的文件名,示例代碼如下:


Response.Write "當前頁面是:"&ASPName()

RealPath 函數獲取指定虛擬路徑的實際路徑,該函數有一個參數,用來傳遞虛擬路徑,示例代碼如下:


Dim sstrRealPath
sstrRealPath=RealPath("/images/")

Bytes 函數獲取指定字符串的字節數,該函數有一個參數,用來傳遞字符串,示例代碼如下:


Dim sintLength
sintLength=Bytes("hello")

SqlInj 函數用來判斷字符串里是否含有 SQL 注入漏洞攻擊內容,該函數有一個參數,用來傳遞要檢驗的字符串,示例代碼如下:


If SqlInj("abc") Then Response.Write "字符串里含有攻擊內容"

HtmlEncode 函數用來對字符串進行 HTML 編碼,該函數有一個參數,用來傳遞要編碼的字符串,示例代碼如下:


sstrTitle=HtmlEncode(sstrTitle)

該文章在 2011/2/26 17:52:25 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved