LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

01-ZONE ASP Framework 1 使用手册

admin
2011年2月26日 17:52 本文热度 2986

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-2024 ClickSun All Rights Reserved