电脑软硬件应用网
当前位置: 电脑软硬件应用网 > 设计学院 > 网页设计 > 正文
建立你的动态网站(下)
建立你的动态网站(下)
2005-12-30 19:16:20  文/45IT收集   出处:电脑软硬件应用网   

网站的魅力在于动态和交互性,缺乏动感的网站是没有活力的。本文将手把手地教你如何建立属于自己的ASP动态网站,使你能够全面、细致地掌握ASP的开发技巧。我们现在接上期的内容继续吧。 

 

我们来继续看看VBScript中的循环语句。循环语句的作用是重复执行程序代码。循环可分为三类:一类是在条件变为“假”之前重复执行语句,一类是在条件变为“真”之前重复执行语句,另一类则是按照指定的次数重复执行语句。在VBScript中可使用下列循环语句:
Do...Loop:当(或直到)条件为“真”时循环;
While...Wend:当条件为“真”时循环;
For...Next:指定循环次数;
ForEach...Next:对于集合中的每项或数组中的每个元素,重复执行一组语句。

1.我们先来看看Do...Loop,它可以多次(次数不定)运行语句块。当条件为“真”时或条件变为“真”之前,重复执行语句块。请看下例:  

<html>
<head>
<title>DoLoop.asp</title>
<body bgcolor="#FFFFFF">
</head>
<p>请将今年到本月为止的每个月份的销售结算记录填写在本页之上。<P>
<%
counter=1
thismonth=month(now())
Do while counter<thismonth+1
response.write""&counter&"月份:"
response.write"______________________________"&"<br><br>"
If counter>13 then
Exit do
End if
counter=counter+1
Loop
%>
<br>
</body>
</html>

这段ASP程序运用循环语句制作了一张销售结算记录表,将以上代码保存为DoLoop.asp,并在浏览器中以http方式进行浏览,根据当前月份的不同,你将看到如下图的结果。
我们来分析一下此段程序,目的是要根据当前的月份打印一张表格。首先我们建立一个计数器counter,初始值设为1,然后我们用函数month()和now()得到当前的月份,最后建立循环,当counter的值小于当前月份的值加1的时候,即显示月份值及一条横线并将counter的值加1,循环语句重复执行,直到以上条件为假时退出循环。其中如果counter大于13则用exit 
do立即退出循环。
Do Loop语句还可以使用以下语法:

Do
[statements]
[Exit Do]
[statements]
Loop[{While|Until}condition]

While...Wend语句是为那些熟悉其用法的用户提供的。但是由于While...Wend缺少灵活性,所以建议最好使用Do...Loop语句。

2.下面我们再来看看For...Next语句。For...Next语句用于将语句块运行指定的次数,在循环中使用计数器变量,该变量的值随每一次循环增加或减少。
关键字Step用于指定计数器变量每次增加或减少的值。在下面的示例中,计数器变量j每次加2。循环结束后,total的值为2、4、6、8和10的总和。  

Sub TwosTotal()
Dim j,total
For j=2 To 10 Step2
total=total+j
Next
MsgBox"总和为"&total&"。"
End Sub

要使计数器变量递减,可将Step设为负值,此时计数器变量的终止值必须小于起始值。在下面的示例中,计数器变量myNum每次减2。循环结束后,total的值为16、14、12、10、8、6、4和2的总和。
  
Sub NewTotal()
Dim myNum,total
For myNum=16 To 2 Step-2
total=total+myNum
Next
MsgBox"总和为"&total&"。"
End Sub

Exit For语句用于在计数器达到其终止值之前退出For...Next语句。因为通常只是在某些特殊情况下(例如发生错误时)要退出循环,所以,可以在If...Then...Else语句的True语句块中使用Exit 
For语句。如果条件为False,循环将照常运行。

3.最后让我们来看看For Each...Next语句,For Each...Next循环与For...Next循环类似。For Each...Next不是将语句运行指定的次数,而是对于数组中的每个元素或对象集合中的每一项重复一组语句。这在不知道集合中元素的数目时非常有用。它的语法如下: 
For Each element In group
[statements]
[Exit For]
[statements]Next[element]

如果group中至少有一个元素,就会进入For Each块执行。一旦进入循环,便首先对group中第一个元素执行循环中的所有语句。只要group中还有其他的元素,就会对每个元素执行循环中的语句。当group中没有其他元素时退出循环,然后从Next语句之后的语句继续执行。

程序调试工作

至此,我们已经完成了对脚本语言VBScript所有的基本知识的学习,但是仅凭阅读上面的文章你是无法熟练运用VBScript的,你必须通过不断的实践来提高自己的水平。当然,如果你熟悉C语言,你也可以选择JavaScript作为ASP应用程序的脚本语言。不知大家有没有发现ASP程序的调试比较困难,因为没有什么现成的工具,在这里我向大家简要介绍一下Microsoft 
Script Debugger,我们可以运用它来进行一定量的程序调试工作。IIS4.0所包括的Microsoft Script Debugger(Script侦错工具),提供脚本程序的侦错功能。你可以使用Microsoft 
Script侦错工具对使用VBScript、JScript编写的脚本程序以及Java applets、beans和ActiveX组件进行调试工作。
有的脚本程序在用户端浏览器执行,有的脚本程序(<%...%>中的部分)在服务器端执行。Microsoft Script Debugger可以检查用户端执行的脚本程序以及服务器端执行的脚本程序。
用户端脚本程序是在用户端浏览器中执行,包括在标准HTML代码中的VBScript、Jscript部分,主要用于对HTML表单输入的基本检查等功能。
服务器端脚本程序是在IIS服务器端执行,包括在ASP程序中。先在IIS服务器上执行,执行结果产生标准的HTML代码,再传送到用户端浏览器。服务器端执行的脚本程序,主要用于多个网页之间的连结、HTML表单输入的处理以及存取服务器上数据库的资料等。

内建对象和组件

ASP在服务器上运行ActiveX脚本和ActiveX组件的服务器端脚本。开发人员可以将脚本和组件结合在一起创建基于Web的应用程序。ActiveX的关键元素是组件对象模型(COM)和分布组件对象模型(DCOM)。这些技术已得到开放组织的许可,并移植到许多平台上。
ADOActive数据对象,为基于Internet以数据为中心的应用程序而优化的一组基于对象的数据访问接口。ADO基于已发布的规范,并且随带在IIS和Microsoft 
Visual InterDev中。

DSN:数据源名称。开放式数据库接口(ODBC)用于引用访问数据所需的驱动程序或其他信息的逻辑名称。Internet信息服务器用于连接到ODBC数据源(如SQLServer数据库)的名称。

Event:事件,由用户或ActiveX控件产生的程序响应操作。一般事件包括按键盘键、通过使用鼠标单击选择按钮和其他鼠标操作。编程人员编写响应这些操作的代码。  

object:对象,在面向对象编程中,由当作完整实体的操作和数据组成的变量。对象是基于特定模型的,在对象中客户使用对象的服务通过由一组方法或相关函数的接口访问对象的数据。然后客户端可以调用这些方法执行某个操作。

ODBC:开放式数据库接口。允许应用程序跨平台数据访问现有数据源的标准应用程序编程接口。

SQL:结构化查询语言(Structured Query Language)。定义和访问关系型数据库的国际标准。

什么是对象?在面向对象编程中,对象就是指由当作完整实体的操作和数据组成的变量。对象是基于特定模型的,在对象中客户使用对象的服务通过一组相关函数接口访问对象的数据,然后客户端可以调用这些函数执行某种操作。

ActiveX组件是建立Web应用程序的关键,它提供了在脚本中执行任务的对象。ActiveX组件是一个文件,该文件包含执行某项或一组任务的代码。由于组件可以执行公用任务,这样程序员们就不必自己去创建执行这些任务的代码。可以利用组件作为脚本和基于Web应用程序的基本模块。只要知道如何访问组件提供的对象,即使是位编写脚本程序的新手,也可以在不了解组件运作方式的情况下编写脚本。总之,组件使你不用学习编程就能够编写强大的脚本。组件是包含在动态链接库.dll或可执行文件.exe中的可执行代码。组件可以提供一个或多个对象以及对象的方法和属性。使用ASP的Server Create Object方法可以创建对象的实例,使用脚本语言的变量分配指令可以为对象实例命名。例如:

Set db=Server.CreateObject("ADODB.Connection")

这里的变量db就是ASP程序创建的访问数据库的对象实例。
ASP提供了可在脚本中使用的内建对象。这些对象使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户信息,从而使对象开发者摆脱了很多烦琐的工作。目前的ASP版本总共提供了六个内建对象,下面让我们通过实例来分别学习它们。

Request对象


可以使用Request对象访问任何基于http请求传递的所有信息,包括从HTML表格用POST方法或GET方法传递的参数、Cookie和用户认证。Request对象使你能够访问客户端发送给服务器的二进制数据。
Request的语法:

Request[.集合|属性|方法](变量)

在这里我们将挑选一些常用的对象语法进行分析。
1.Form
Form集合通过使用POST方法的表格检索邮送到http请求正文中的表格元素的值。
语法为“Request.Form(element)[(index)|.Count]”,其中参数element指定集合要检索的表格元素的名称;index可选参数,使用该参数可以访问某参数中多个值中的一个。它可以是1到Request.Form(parameter).Count之间的任意整数;Count为集合中元素的个数。
Form集合按请求正文中参数的名称来索引。Request.Form(element)的值是请求正文中所有element值的数组。通过调用Request.Form(element).Count来确定参数中值的个数。如果参数未关联多个值,则计数为1。如果找不到参数,计数为0。要引用有多个值的表格元素中的单个值,必须指定index值。index参数可以是从1到Request.Form(element).Count中的任意数字。如果引用多个表格参数中的一个,而未指定index值,返回的数据将是以逗号分隔的字符串。
对于hobby参数,你可以使用下面的脚本检索这些值。  

<html>
<head><title></title></head>
<body>
<p>请填写你的爱好</p>
<form method="POST" action="form.asp">
<p><input type="text" name="hobby" size="20"><br>
<input type="checkbox" name="hobby" value="足球">足球
<input type="checkbox" name="hobby" value="乒乓球">乒乓球</p>
<p><input type="submit" value="发送" name="B1">
<input type="reset" value="重填" name="B2"></p>
</form>
<%
For Each i In Request.Form("hobby")
Response.Write i&"<BR>"
Next
%>
</body>
</html>

将以上代码保存为form.asp文件并运行,request对象可以根据你在form中填入或选择元素内容的不同将元素逐个显示出来。
当然使用For...Next循环也可以生成同样的输出,如下所示:

<%
For i=1 To Request.Form("hobby").Count
Response.Write Request.Form("hobby")(i)&"<BR>"
Next
%>

2.QueryString
QueryString集合检索http查询字符串中变量的值,http查询字符串由问号(?)后的值指定,如“<A HREF="example.asp?string=this 
is a sample">stringsample</A>”。
生成值为“this is a sample”的变量名字符串。通过发送表格或由用户在其浏览器的地址框中键入查询也可以生成查询字符串。
语法为“Request.QueryString(variable)[(index)|.Count]”。
QueryString集合可以让你以名称检索QUERY_STRING变量。Request.QueryString(参数)的值是出现在QUERY_STRING中所有参数的值的数组。通过调用Request.QueryString(parameter).Count可以确定参数有多少个值。
我们也可以使用QueryString来达到与前一个范例相同的功能。只需要将request.form部分替换如下:

<%
For Eachi In Request.querystring("hobby")
Response.Write i &"<BR>"
Next
%>

3.Cookie
什么是Cookie?Cookie其实上是一个标签,当你访问一个Web站点时,它会在你的硬盘上留下一个标记,下一次你访问同一个站点时,站点的页面会查找这个标记。每个Web站点都有自己的标记,标记的内容可以随时读取,但只能由该站点的页面完成。每个站点的Cookie与其他所有站点的Cookie存在于同一文件夹中的不同文件内(你可以在Windows的目录下的Cookie文件夹中找到它们)。一个Cookie就是一个惟一浏览过网址的标记,Cookie可以包含一个对话期或几个对话期之间某个Web站点的所有页面共享的信息。使用Cookie还可以在页面之间交换信息。Request提供的Cookies集合允许用户检索在http请求中发送的Cookie的值。这项功能经常被使用在要求认证客户密码以及电子公告板、Web聊天室等ASP程序中。
它的语法为“Request.Cookies(Cookie)[(key)|.attribute]”;参数Cookie指定要检索其值的Cookie;key为可选参数,用于从Cookie字典中检索子关键字的值;attribe指定Cookie自身的有关信息。
可以通过包含一个key值来访问Cookie字典的子关键字。如果访问Cookie字典时未指定key,则所有关键字都会作为单个查询字符串返回。例如,如果MyCookie有两个关键字First和Second,而在调用Request.Cookies时并未指定其中任何一个关键字,那么将返回下列字符串。

First=first key value & Second=second key value

如果客户端浏览器发送了两个同名的Cookie,那么Request.Cookie将返回其中路径结构较深的一个。例如,如果有两个同名的Cookie,但其中一个的路径属性为/www/,而另一个为/www/home/,客户端浏览器同时将两个Cookie都发送到/www/home/目录中,那么Request.Cookie将只返回第二个Cookie。
要确定某个Cookie是不是Cookie字典(Cookie有否有关键字),可使用下面的脚本。

<%=Request.Cookies("myCookie").HasKeys%>

如果MyCookie是一个Cookie字典,则前面的赋值为TRUE。否则,为FALSE。下面我们来看看一个Cookie的应用实例:

<%
nickname=request.form("nick")
response.Cookies("nick")=nickname
用response对象将用户名写入Cookie之中
response.write"欢迎"&request.Cookies("nick")&"光临小站!"
%>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>Cookie</title>
<metaname="GENERATOR" content="Microsoft Front Page3.0"></head>
<body>
<form method="POST" action="Cookie.asp">
<p><input type="text" name="nick" size="20">
<input type="submit" value="发送"name="B1"><input 
type="reset" value="重填"name="B2">
</p>
</form>
</body>
</html>

这其实是一个在基于Web的BBS或Chat的ASP程序中常用的手法,它将用户在起始页面上填入的姓名保存在Cookie中,这样后面的程序就可以很容易地调用该用户的昵称了。

4.ServerVariables
大家都知道在浏览器中浏览网页时候使用的传输协议是http,在http的标题文件中会记录一些客户端信息,如客户的IP地址等等,有时服务器端需要根据不同的客户端信息做出不同的反应,这时候就需要用ServerVariables集合获取所需信息。
它的语法是“Request.ServerVariables(服务器环境变量)”。由于服务器环境变量较多,下面我们仅将一些常用的变量列出:
ALL_http:客户端发送的所有http标题文件。
CONTENT_LENGTH:客户端发出内容的长度。
CONTENT_TYPE:内容的数据类型。如“text/html”。同附加信息的查询一起使用,如http查询GET、POST和PUT。
LOCAL_ADDR:返回接受请求的服务器地址。如果在绑定多个IP地址的多宿主机器上查找请求所使用的地址时,这条变量非常重要。
LOGON_USER:用户登录WinNT的账号。
QUERY_STRING:查询http请求中问号后的信息。
REMOTE_ADDR:发出请求的远程主机的IP地址。
REMOTE_HOST:发出请求的远程主机名称。如果服务器无此信息,它将设置为空的MOTE_ADDR变

[1] [2] 下一页

  • 上一篇文章:

  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    页面自动跳转的几种实现方法
    网站内容的四种分类形式 或多或少的…
    如何指定规范网页?rel="canonical"
    浅谈网站评论体系设计的不足之处
    网页中“上一篇”“下一篇”设计思考
    网页设计进度指示器帮助用户预测步骤
    网页用户体验:网页注册表单设计分析
    网页设计常出现8大问题
    网页设计的形象思维归纳
    彻底去掉动易内容页顶部的“改变图片…
    关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 |

    Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号