当前位置: 首页 > news >正文

对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

相关文章:

  • “一盘货卖全球”之后,天猫今年将推出国货“出海2.0版”
  • 分析图第一讲前期准备,渲染白模5.9
  • java如何获取SQL查询结果集中的行数和列数
  • 中小型企业到底需要什么样的ERP
  • 常见Filed Types
  • launcher 分析
  • 响应式一级到三级导航
  • 纯键盘开发实战(Mouseless Programming)
  • 关于spring和ibatis的整合
  • mybatis java.lang.NumberFormatException: For input string: D
  • 初识 beanstalkd
  • Oracle Apps AutoConfig
  • 用以太坊开发框架Truffle开发智能合约实践攻略(代码详解)
  • javascript解汉诺塔问题
  • RIP 漏打 no auto-summary 造成环路故障
  • 时间复杂度分析经典问题——最大子序列和
  • (三)从jvm层面了解线程的启动和停止
  • CentOS7 安装JDK
  • centos安装java运行环境jdk+tomcat
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Java 网络编程(2):UDP 的使用
  • java概述
  • log4j2输出到kafka
  • markdown编辑器简评
  • nginx 配置多 域名 + 多 https
  • oldjun 检测网站的经验
  • PAT A1017 优先队列
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • SQL 难点解决:记录的引用
  • Xmanager 远程桌面 CentOS 7
  • 大主子表关联的性能优化方法
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 码农张的Bug人生 - 见面之礼
  • 区块链共识机制优缺点对比都是什么
  • 日剧·日综资源集合(建议收藏)
  • 一天一个设计模式之JS实现——适配器模式
  • 译米田引理
  • 7行Python代码的人脸识别
  • linux 淘宝开源监控工具tsar
  • 昨天1024程序员节,我故意写了个死循环~
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #{}和${}的区别是什么 -- java面试
  • #vue3 实现前端下载excel文件模板功能
  • #微信小程序(布局、渲染层基础知识)
  • (第一天)包装对象、作用域、创建对象
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (原創) 物件導向與老子思想 (OO)
  • ******之网络***——物理***
  • ***详解账号泄露:全球约1亿用户已泄露
  • .aanva
  • .net 验证控件和javaScript的冲突问题