ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 动态网站设计十八般武艺——ASP篇(三)(转)

动态网站设计十八般武艺——ASP篇(三)(转)

原创 Linux操作系统 作者:jcszjswkzhou 时间:2019-06-26 22:03:05 0 删除 编辑

通过前两篇的学习,相信各位已经对ASP的动态网站设计有了一个基本的概念和整体的印象。从本篇开始作者将从脚本语言的使用着手,由浅入深地带领大家探索ASP动态网站设计的真正奥秘。

本文第二篇刊登后,很多朋友给我发了“妹儿”,希望能尽快看到本文的第三、第四、乃至第……篇,甚至有位朋友焦急地要我将ASP篇的全文发给他。看到有如此之多志同道合的朋友,令我精神大振。虽然ASP早在两年前就已经推出了,但直到今年它才以其灵活便捷的开发过程、良好的WEB数据库连接功能受到了国人的重视,然而由于目前国内尚缺乏关于ASP开发WEB应用程序的详尽教材,因此使得国内广大WEB开发者们仍处在闭门啃E文的阶段,也包括作者本人。也正因为如此,作者才蒙发了写文章的念头,在得到Chinabyte网络学院翁斌先生的大力支持后,各位才得以见到此文。

  作者殷切希望能通过此文为广大WEB开发者和爱好者提供便利,使大家共同来参加ASP的学习和交流,为了顾全不同层次读者的需求作者还是决定从最基本的脚本语言的编制着手,随后再一步一步地讲解ASP内建对象、ActiveX组件以及用ASP开发WEB应用程序的实例,相信通过一段时间持续的学习,不出几个月各位都能够得心应手地开发自己的动态网站。下面就先请大家跟我来学习一些ASP中应用脚本语言(以VB Script为主)的基础知识。

  在开始学习脚本语言之前,你应该理解一些简单的概念--变量、进程。所谓变量是计算机内存中已命名的存储位置,其中包含了数字或字符串等数据,它使用户便于理解脚本操作的名称,为用户提供了一种存储、检索和操作数据的途径。程序是由一个或多个进程组成的,在VBScript中,进程就是“指令块”,通常意义上的进程,如Sub,只是为了简单的数据处理。

  在VBScript中,严格的来讲变量是不用声明的,

  如:<%Mystring="This is my string"%>

  然而,即使在使用变量前不需要去声明变量,也应养成在编程时声明变量的良好习惯,因为这样有助于防止错误发生。声明一个变量意味着告诉脚本引擎,有一个特定名称的变量,这样就可以在脚本中引用该变量。在VBScript中声明一个变量可以使用“Dim”语句,如下:
  

  变量的作用域即生命期,决定哪些脚本命令可访问变量。在过程内部声明的变量具有局部作用域。每执行一次过程,变量就被创建然后消亡。而过程外部的任何命令都不能访问它。在过程外部声明的变量具有全局作用域,其值能被ASP页上的任何脚本命令访问和修改。声明变量时,局部变量和全局变量可以有相同的名称。而改变其中一个的值并不会改变另一个的值。如果没有声明变量,则可能不小心会改变一个全局变量的值。例如,以下脚本命令返回值1,虽然有两个名为Y变量:

  <%
  Dim Y = 1
  Call SetLocalVariable
  Response.Write Y
  Sub SetLocalVariable
    Dim Y
    Y = 2
  End Sub %>

  由于变量没有显式声明,以下的脚本命令将返回2。当过程调用将Y设置为2时,脚本引擎认为该过程是要修改全局变量:
  <%
  Y=1
  CallSetLocalVariable
  Response.WriteY
  SubSetLocalVariable
    Y=2
  EndSub%>

  然而,全局变量仅在单个ASP页中可用,要使它在单个ASP页之外可用,就必须为变量赋予会话或应用程序作用域。会话作用域变量对一个用户所请求的ASP应用程序中的所有页都是可用的。应用程序作用域变量也如此。对单个用户来说,会话变量是存储信息的最佳途径,例如,用户首选项、用户名或用户的标识。对于一个特殊应用程序的所有用户,应用程序作用域是存储信息的最佳途径,例如,应用程序特定的问候语或应用程序所需的初始值。ASP提供两个内建对象来让您存储变量:Session对象和Application对象,这将在今后的ASP内建对象中着重讨论。

  让我们再来看看常量的定义,常量是用来代替一个数或字符串的名称,它在整个脚本中保持不变。您可以使用Const语句在VBScript中创建用户自定义常数。使用Const语句可以创建名称具有一定含义的字符串型或数值型常数,并给它们赋原义值。例如:。

  如:<%Const mystring="这是一个常量" %>

  <%Const myage=100%>

  请注意字符串文字包含在两个引号("")之间。这是区分字符串型常数和数值型常数的最明显的方法。日期文字和时间文字包含在两个井号(#)之间。例如:

  <%Const CutoffDate=#6-1-97# %>

  在理解了常量和变量之后,我们来看看什么是过程。它是一组能执行指定任务且具有返回值的脚本命令。您可以定义自己的过程,然后在脚本中反复调用它们。您可以将过程定义放在调用过程的.asp文件中,也可以将通用过程放在一个共享的.asp文件中,然后用SSI#include指令将其包含进其他调用其过程的.asp文件中。您还可选择另一种方法,即把这些功能打包在ActiveX组件中。过程定义可出现在标记内部且必须遵循声明脚本语言的规则。如果过程所用的语言与主脚本语言不同,则要使用

  这里的RUNAT=SERVER属性通知Web服务器在服务器上处理脚本。若不设置该属性,脚本将由客户端浏览器处理。LANGUAGE属性决定此脚本块所用的脚本语言。您可以指定任何一种具有脚本引擎的语言。请使用VBSCRIPT指定VBScript;用JSCRIPT指定JScript。若不设置LANGUAGE属性,将用主脚本语言解释此脚本块。

  在VBScript中,过程被分为两类:Sub过程和Function过程。Sub过程是包含在Sub和EndSub语句之间的一组VBScript语句,执行操作但不返回值。Sub过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果Sub过程无任何参数,则Sub语句必须包含空括号()。

  Function过程是包含在Function和End Function语句之间的一组VBScript语句。Function过程与Sub过程类似,但是Function过程可以返回值。Function过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果Function过程无任何参数,则Function语句必须包含空括号()。Function过程通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。Function返回值的数据类型总是Variant。在下面的示例中Sub过程使用两个固有的(或内置的)VBScript函数,即MsgBox和InputBox,来提示用户输入信息。然后显示根据这些信息计算的结果。计算由使用VBScript创建的Function过程完成,Celsius函数将华氏度换算为摄氏度。Sub过程ConvertTemp调用此函数时,包含参数值的变量被传递给函数。换算结果返回到调用过程并显示在消息框中。

  Sub ConvertTemp()
    temp=InputBox("请输入华氏温度。",1)
    MsgBox "温度为"&Celsius(temp)&"摄氏度。"
  End Sub
  Function Celsius(fDegrees)
    Celsius=(fDegrees-32)*5/9
  End Function

  给过程传递数据的途径是使用参数。参数被作为要传递给过程的数据的占位符。参数名可以是任何有效的变量名。使用Sub语句或Function语句创建过程时,过程名之后必须紧跟括号。括号中包含所有参数,参数间用逗号分隔。例如,在下面的示例中,fDegrees是传递给Celsius函数的值的占位符:

  FunctionCelsius(fDegrees)
    Celsius=(fDegrees-32)*5/9
  EndFunction

  要从过程获取数据,必须使用Function过程。请记住,Function过程可以返回值;Sub过程不返回值。

  以上给大家简要介绍了VBScript,由于篇幅的原因,作者不可能在此详尽介绍VBScript的所有知识。但是由于ASP本身并不是一种编程语言,因此在大家编写ASP应用程序的过程中,必须借助脚本语言来实现许多特殊的功能,所以灵活熟练地掌握脚本语言对一个使用ASP编写WEB应用程序的程序员来说是至关重要的。无论您是一个有丰富编程经验的高手还是一个初学者,只要您现在希望通过ASP编写WEB应用程序,作者极力建议您掌握至少一门脚本语言(如VBScript)。在本篇的末尾作者将留一道课后作业给大家,希望各位能通过自学有关书籍并在实践中迅速掌握脚本语言。

  课后作业:

  作者正在用ASP制作一套基于WEB的BBS系统,作者希望能在其中添加一项特殊功能,即当任何用户登陆该BBS后都能够查阅近七天来所有新发布的信息。由于ASP本身的内建对象和组件并没有提供此项功能,因此作者请大家从VBScript着手,来设计这样一个功能。如有任何疑问请EMAIL作者,答案将在下一篇公布。敬请关注。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-124369/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-08-29

  • 博文量
    3488
  • 访问量
    2602210