对ASP网站程序的设计

因为是在最初工作时使用的技术,拿来开篇不算意外了。VBS只是脚本语言,但毕竟也有类和对象的说法,虽然不够强大,使用起来却很简单。

VBS使用 Class定义类,Property定义属性,Sub定义方法,Function定义函数,New创建对象。有了这么多的支持,足够让ASP网站分清层次了。

现在通过一个例子来说思路。 x.asp页面,判断用户是否登陆。页面加载后,会首先取得用户的身份,然后去数据库中查询比对以确认用户身份是否合法。

我把他分为如下几个层次来处理:

一、页面层负责判断用户身份合法性,并决定继续操作或者抛出错误。

二、业务层负责提供用户的属性和方法的定义。

三、数据层负责提供数据库查询语句及查询参数。

四、操作层负责数据库的实际操作。

但是在实际操作过程中,我把二和三结合到了一起,因为我觉得没必要把简单的东西搞得过于复杂。

首先,定义出负责实际操作数据库的类,ASP使用ADODB的Connection、Command、Recordset来操作数据库,定义几个私有变量让这个类来使用即可。我为DataAccess创建了一些方法。

<%
Class DataAccess
    '打开数据库连接
    Public Sub Open()
    '返回一个查询的值
    Public Function GetScalar(ByVal strSQL)
    '执行SQL语句
    Public Function Execute(ByVal strSQL)
    '装载数据
    Public Sub Fill(ByVal strSQL)
    '返回查询得到的总记录数
    Public Function RecordCount()
    '读取下一行
    Public Function Read()
    '是否超过行尾
    Public Function Eof()
    '取得当前行指定列的值
    Public Function Data(RecorderIndex)
    '清楚Fill查询的结果
    Public Sub Clear()
    '关闭数据库连接
    Public Sub Close()
End Class
%>

然后,我又创建了一个用户信息的类。

<%
Class User
    Private u_name, u_pass

    Private Sub Class_Initialize
        u_name = Session("usr")
        u_pass = Session("pwd")
    End Sub

    Public Function IsAuthenticated()
        Dim da, sql, f
        Set da = New DataAccess
        sql = "select 什么什么 where 什么什么"
        da.Open()
        da.Fill(sql)
        If Not da.Eof() Then
            f = True
        Else
            f = False
        End If
        da.Clear()
        da.Close()
        Set da = Nothing
        IsAuthenticated = f
    End Function

    Public Function ValidateUser(ByVal usr, ByVal pwd)
    '其他方法属性 以及其他都可以放进来
End Class
%>

最后,x.asp页面就变得很清爽了。

<%
Dim current_user
Set current_user = New User
If Not current_user.IsAuthenticated Then
    '给出拒绝的提示信息
End If
%>

在其他地方使用的时候,我们就可以按照这个思路去定义类,比如Article,通过New出一个Article来实现单个对象,通过Fill(参数列表)方式来填充一个数据集,通过Read()来逐行读取,通过Data(列名称)来拿到具体的数据。

这样,你的ASP页面就变得整洁并且程序的结构也更加的清晰了。就像这样:

<%
Class Article
    Private da
    Private p_id, p_title, p_content

    Public Property Get Title
        Title = p_title
    End Property

    Public Property Let Title(ByVal v)
        p_title = v
    End Property

    Private Sub Class_Initialize
        Set da = New DataAccess
        da.Open
    End Sub

    Private Sub Class_Terminate
        da.Close
        Set da = Nothing
    End Sub

    Public Sub SetById(ByVal id)
        da.Fill("select * from 什么什么什么");
        If Not da.Eof Then
            p_title = da.Data("Title")
        End If
        da.Clear
    End Sub

    Public Function Fill(ByVal type, ByVal author)
        da.Fill("select * from 什么什么");
    End Function

    Public Function Read()
        Read = da.Read()
    End Function
End Class
%>

页面部分:

<%
Dim article1
Set article1 = New Article

article1.SetById(45)
Response.Write(article1.Title)

article1.Fill("news", "tom")
Do While article1.Read()
    Response.Write(article1.Data("Title"))
Loop
article1.Clear
%>

转载于:https://www.cnblogs.com/agrou/archive/2012/12/20/2826746.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值