网络程序设计—ASP(第3版尚俊杰编著)课后习题答案分析

网络程序设计—ASP(第3版尚俊杰编著)课后习题答案分析

2023年7月14日发(作者:)

第1章 ASP程序设计概述

1. 选择题(可多选)

(1)静态网页的扩展名一般是:

B .php

答案:A

(2)ASP文件的扩展名是:

B. txt C. doc D. asp

答案:D

(3)当前的Web程序开发中通常采用什么模式?

A. C/S B. B/S C. B/B D. C/C

答案:B

解释:C/S是客户机(client)/服务器(server),B/S是浏览器(browser)/服务器。C/S一般要求用户有特定的客户端。比如QQ就是C/S模式,你的桌面上的QQ就是腾讯公司的特定的客户端,而服务器就是腾讯的服务器。而B/S模式则不需要特定的客户端,只要有普通浏览器,就可以访问到服务器了,Web页就是B/S 模式。

(4)小王正在家里通过拨号上网访问搜狐主页,此时,他自己的计算机是:

A. 客户端 B. 既是服务器端又是客户端

C. 服务器端 D. 既不是服务器端也不是客户端

答案:A

(5)小王正在访问自己计算机上的网页,此时,他自己的计算机是:

A. 客户端 B. 既是服务器端又是客户端

C. 服务器端 D. 既不是服务器端也不是客户端

答案:B

(6)ASP脚本代码是在哪里执行的?

A. 客户端 B. 第一次在客户端,以后在服务器端

C. 服务器端 D. 第一次在服务器端,以后在客户端

答案:C

解释:ASP脚本代码是在服务器端运行的,服务器将其解释执行为标准的HTML代码,然后发送到客户端。

(7)在以下URL中,从形式上看正确的是:

A. /history/1998/

B. /news/

C. ftp:// /history/1998/

D. ftp:///news/

答案:A B C D

解释:从形式上看,都是正确的。

(8)如果在chapter1下建立了一个子文件夹images,并且在其中放置了一个图片文件,那么以下URL正确的是:

A. localhost/asptemp/chapter1/images/

1 B. 127.0.0.1/asptemp/chapter1/images/

C. localhost/inetpub/wwwroot/asptemp/chapter1/images/

D. 127.0.0.1/inetpub/wwwroot/asptemp/chapter1/images/

答案:A B

(9)对于1.5.5节建立的,以下浏览方式正确的是:

A. localhost/temp/

B. 127.0.0.1/temp/

C. localhost/asptemp/chapter1/temp/

D. 127.0.0.1/asptemp/chapter1/temp/

答案:A B C D

解释:AB两种方式利用了建立的虚拟目录,CD实际上没有用到这个虚拟目录,此时和没有什么区别。

(10)以1.5.5节的示例为基础,假如现在在C:inetpubwwwrootasptempchapter1temp下又建立了一个子文件夹temp,其中建立了一个ASP文件,则浏览方式正确的是:

A. localhost/temp/temp/

B. 127.0.0.1/temp/temp/

C. localhost/asptemp/chapter1/temp/temp/

D. 127.0.0.1/asptemp/chapter1/temp/temp/

答案:A B C D

解释:AB利用了建立的虚拟目录,CD没有用到虚拟目录。

2. 问答题

(1)名词解释:静态网页、动态网页、服务器端、客户端、URL

答案:

静态网页——所谓静态网页,就是说该网页文件里没有程序代码,只有HTML标记,这种网页的扩展名一般是.htm或.html。静态网页一经制成,内容就不会再变化,不管何时何人访问,显示的都是同样的内容,如果要修改内容,就必须修改源文件,然后重新上传到服务器上。

动态网页——所谓动态网页,就是说该网页文件不仅含有HTML标记,而且含有程序代码,这种网页的扩展名一般根据不同的程序设计语言而不同,如ASP文件的扩展名为.asp。动态网页能够根据不同的时间、不同的来访者而显示不同的内容。如常见的BBS、留言板、聊天室一般是用动态网页实现的。

服务器端、客户端——一般来说,凡是提供服务的一方称为服务器端,而接受服务的一方称为客户端。比如,当我们在浏览搜狐主页的时候,搜狐主页所在的服务器就称为服务器端,而我们自己的计算机就称为客户端。

URL——大家在上网的时候,需要在浏览器地址栏中输入一个网址,回车后就可以打开相应的网页了,这个网址又叫做统一资源定位符(URL:Uniform Resource Locator)。在Internet中的每一个网页文件或其他类型的文件都有自己的URL,它的一般形式是:

协议://服务器地址(域名或IP地址): 端口号/路径(含文件名)

(2)请结合URL知识简述静态网页和动态网页的工作原理。

答案:静态网页的工作原理是当你在浏览器里输入一个网址回车后,就向服务器端提出了一个浏览网页的请求。服务器端接到请求后,就会找到你要浏览的静态网页文件,然后发送给你。

动态网页的工作原理是服务器端接到客户端发出的请求后,首先会找到你要浏览的动态网页文件,然后就解释执行其中的程序代码,将含有程序代码的动态网页转化为标准的

2 静态网页,然后将静态网页发送给你。

(3)请简单比较ASP、PHP和JSP的优缺点。

答案:总的来说,ASP、PHP和JSP基本上都是把脚本语言嵌入到了HTML文档中。如果要说它们最主要的优点:ASP学习简单,使用方便;PHP软件免费,运行成本低;JSP多平台支持,转换方便。

(4)某同学开发了一个显示来访时间的ASP文件,存放在C:inetpubwwwroot下,然后在Windows资源管理器中双击该文件,却不能正常显示,请问是什么原因?

答案:ASP文件是不能直接双击运行的,必须通过浏览器访问,由服务器端来解释执行为标准的HTML代码,然后才可以显示在浏览器中。

(5)在1.4.3节中讲的是如何访问ASP文件,如果希望访问HTML网页文件,可以用类似的方法吗?

答案:可以。对于HTML文件,服务器端找到到该文件后,直接发送给客户端即可。

(6)想一想,把一个HTML网页文件直接更改扩展名为.asp行不行?

答案:可以。相当于一个不含有任何动态代码的ASP文件,运行时服务器端也会对其进行解释执行,只不过实际上没有代码需要解释执行而已。

(7)什么是应用程序?为什么要建立应用程序?

答案:简单的说,添加了虚拟目录的文件夹就可以称为应用程序。建立应用程序后,多个网站之间就可以独立了,一些公共变量就不会混淆。

3. 实践题

(1)请根据自己的实际情况搭建ASP的运行环境。

答案:请按照教材中1.2节说明搭建,具体步骤略。

(2)请上网下载并安装EditPlus。

答案:从下载安装程序后,直接双击安装即可,具体步骤略。

(3)请在文件夹C:Inetpubwwwrootasptemptjchapter1下新建一个asp文件,在页面上显示来访日期(日期函数为Date())。

答案:打开EditPlus,在其中输入清单date所示的程序代码,然后将其保存到C:Inetpubwwwrootasptemptjchapter1文件夹下,名称为。

清单date 显示来访日期

一个简单的ASP程序

欢迎您光临我的主页

<%

Dim a

'声明一个变量

'给变量赋值,其中Date是日期函数

'在页面上输出变量a的值

a="您来访的日期是:" & Date()

a

%>

3

保存完毕后,打开浏览器,在其中输入localhost/asptemptj/chapter1/即可。

(4)请在C:Inetpubwwwrootasptemptjchapter1下面新建一个文件夹tempb,然后为该文件夹添加虚拟目录aspb,并设置默认文档为和。

答案:请参考教材1.5节进行,具体步骤略。

(5)(选做题)请参考IIS的专门书籍好好研究一下,是否一定要在C:Inetpub

wwwroot下开发ASP文件?可不可以放在别的文件夹下?

答案:其实可以在其他文件夹下,比如在D:asptemp下建立ASP文件,具体步骤如下:

第1步:首先建立D:asptemp文件夹。

第2步:在IIS中为该文件夹建立虚拟目录asptemp(注意,也可以用别的名称).

第3步:下面就可以在asptemp文件夹下分章建立子文件夹和ASP文件了,比如建立chapter1子文件夹,然后在其中建立文件。

第4步:建立ASP文件后,在浏览器中输入localhost/asptemp/chapter1/即可。

4 第2章 HTML基础知识

1. 选择题(可多选)

(1)HTML文档包含的两个部分是指:

A. 文档头部 B. 标题 C. 注释 D. 文档主体

答案:A D

(2)HTML中的注释格式是:

A. B.

C. <%-- 注释内容 --%> D.

该页面用来演示文档头部

10 第3章 VBScript基础知识

1. 选择题(可多选)

(1)下列哪一个变量名称是正确的?

A. 1_ab B. ab_1 C. _ab D. ab?

答案:B

(2)在一段程序中a是一个变量,那么"a"是:

A. 变量 B. 直接常量 C. 字面常量 D. 符号常量

答案:D

(3)下面哪条语句可以正确执行?(注:第四句我的主页两边是中文引号)

A. "

我的主页

"

B. "

我的主页

"

C. "

我的主页

"

D. "

“我的主页”

"

答案:BCD

解释:在两个双引号中再次用到双引号时,可以用单引号或两个双引号来代替。

(4)执行语句a="6"后,变量a的数据子类型是?

A. 字符串 B. 日期 C. 数值 D. 布尔

答案:A

(5)执行语句a="2008-8-8"后,变量a的数据子类型是?

A. 字符串 B. 日期 C. 数值 D. 布尔

答案:A

(6)假设变量a=5、b=3,则执行语句c="a>b"后,变量c的数据子类型是?

A. 字符串 B. 日期 C. 数值 D. 布尔

答案:A

(7)语句a="abc"="abc"运行完毕后,变量a的数据子类型是?

A. 数值 B. 字符串 C. 布尔 D. 日期

答案:C

解释:右侧是一个比较运算,结果是True,然后再赋值给a

(8)执行语句a=3: a=a+5后,变量a的值是:

A. 3 B. 5 C. 8 D. 出错

答案:C

解释:ASP中,冒号(:)是用来做语句分割的,也就是说可以将两行语句合成为一行来写。因此a=3: a=a+5就等价于a=3

a=a+5,结果自然就是8.

(9)已知x=123,那么执行语句y=x 10 Mod 10后,变量y的值是?

A. 0 B. 1 C. 2 D. 3

答案:C

解释:这是一个算术运算,运算顺序为从左至右,x10表示x整除10后的值,为12,然后再计算12 Mod 10,表示12除以10的余数,结果为2.

11 (10)已知a= "ab",那么执行语句b="cd'" & a & " " & "ef"后,变量b的值是?

(提示:请注意题目和答案中的空格)

A. "cd'ab ef" B. "cd'abef" C. "cdabef" D. "cdab ef"

答案:A

(11)下面的语句执行完毕后,变量a、b、c、d的值分别是?

<% a="1"+"1": b="1"+1: c="1" & "1": d="1" & 1 %>

A. "11"、"11"、"11"、"11" B. "11"、2、"11"、"11"

C. 2、2、"11"、"11" D. "11"、"11"、2、2

答案:B

解释:做算术运算+的时候,如果有一个操作数是数值型,另一个是可以转换为数值的字符串,则会自动转换为数值,并执行相加运算。但是如果用&,则任何时候都是执行连接运算。

(12)请问表达式Not(6+3<5+2)的值是?

A. True B. False C. 9 D. 无法计算

答案:A

(13)请问Int(3.45)和Int(-3.45)的值分别是什么?

A. 4、-4 B. 3、-4 C. 3、3 D. 3、-3

答案:B

解释:Int:返回数的整数部分,且对于负数,将返回小于或等于 number 的第一个负整数。

(14)执行语句a=Int(10 * Rnd())后,则a的值不可能出现的有?

A. 0 B. 1 C. 10 D. 11

答案:CD

解释:Rnd()返回一个大于等于0且小于1的随机数。

(15)在取整时按四舍五入进行的函数是?

A. Int B. Fix C. Round D. CInt

答案:C

(16)请问Mid("八千里路云和月",3,2)的返回值是什么?

A. "千里" B. "里路" C. "里" D. "路云"

答案:B

解释:表示从第三个字符开始取两个字符。

(17)执行语句a=InStr(Trim(Replace(" abcdef ","c","")),"ef")后,变量a的值是?

A. 0 B. 1 C. 4 D. 5

答案:C

解释:注意Replace(" abcdef ","c","")是将字符c替换为空,而不是空格。

Instr()是返回第二子串在第一个串中第一次出现的位置。

(18)函数DateDiff("m",#2008-8-8#,#2008-10-1#)的返回值是?

A. 1 B. 2 C. 54 D. 5

答案:2

(19)对于数组a(3,4),函数UBound(a,2)的值是:

A. 1 B. 2 C. 3 D. 4

答案:D

解释:UBound()返回数组的指定维数的最大可用下标.

(20)假如变量a的值是"100",则IsNumeric(a)和VarType(a)的值分别是?

A. True、2 B. True、8 C. False、2 D. False、8

12 答案:B

解释:IsNumeric()会先转化变量a的类型为数值,如果能转化,就为True。而VarType函数只返回当前的类型,而"100"当前确实是字符串。

(21)假如变量a的值是"2008-8-8",则IsDate(a)和VarType(a)的值分别是?

A. True、2 B. True、8 C. False、2 D. False、8

答案:B

解释:同上题。

(22)执行语句a=Chr(Asc("ABC"))后,则a的值是:

A. "ABC" B. "A" C. 65 D. 出错

答案:B

解释:Asc()函数返回与字符串的第一个字母对应的 ANSI 字符代码,而Chr函数返回该ANSI代码对应的字符,所以最后为"A"。

(23)退出Do循环的语句是?

A.Exit For B. Exit Do C. Exit Sub D. Exit Function

答案:B

(24)在示例3-11和3-12中,循环结束后,I的值分别是多少?

A. 100、100 B. 101、101 C. 100、101 D. 101、100

答案:B

(25)以下哪些语句可以嵌套使用?

A. For…Next B. Do…Loop C. Select Case D. If…Then…Else

答案:ABCD

2. 问答题

(1)名词解释:单目运算符、双目运算符、操作数、函数、子程序、过程

单目运算符——就是指该运算符只对一个操作数起作用。

双目运算符——指运算符对它左右两侧的操作数都起作用。

操作数——参与运算的数。

函数——就是由若干语句组成的程序模块,它可以实现一个特定的功能,并返回一个函数值。

子程序——就是只执行程序而不返回值的程序模块。

过程——就是自己定义的函数,过程有两种:一种是Sub子程序,一种是Function函数。两者的区别在于:Sub子程序只执行程序而不返回值,而Function函数执行程序后会返回值。

(2)脚本级变量和过程级变量有什么重要区别?

答案:脚本级变量在整个ASP文件内都可以被引用,而过程级变量,只能在过程内使用。

(3)在页面A中定义的变量可以在页面B中引用吗?

答案:一般是不可以的,但是如果把A页面包含在B中,就是可以的。

(4)程序中的符号常量可以用变量来代替吗?

答案:可以。

(5)请简述四类运算符的优先级顺序。

答案:算术运算符>连接运算符>比较运算符>逻辑运算符

(6)不同过程中的变量名是否可以一样?

答案:可以,因为过程级变量,只在本过程中有效。但不推荐这样使用。

13 (7)Function函数中的形参和实参名称是否可以一样?

答案:可以,形参和实参名称可以一样,也可以不一样,因为两者是按位置对应的。

(8)在For…Next循环中,可以给计数器变量赋值吗?

答案:虽然也是可以的,但是不建议更改计数器变量,因为很容易引起变量值的混乱。

(9)请以示例3-12为例简述Do…Loop循环的执行过程。

答案:略,请参考3.11.2节的讲解。

(10)如何将两个变量的值互换?(提示:用一个中间变量)

答案:首先定义一个中间变量,将第一个变量的值赋给中间变量,然后再将第二个变量的值赋给第一个变量,最后将中间变量的值赋给第二个变量,这样就实现了两个变量值的互换。

3. 实践题

(1)请在你的个人主页上添加时间显示信息,显示当天的日期、时间及星期几。

答案:参见asptemptj/chapter3/Time_,注意学习select case的写法, 并打开浏览器,在其中输入localhost/asptemptj/chapter3/ Time_即可访问,清单如下:

清单Time_list Time_. 显示时间信息代码

习题3-2-(1)

<%

Date() & " " & Time()

Select Case Weekday(Date())

Case 1

%>

14

"星期日"

"星期一"

"星期二"

"星期三"

"星期四"

"星期五"

"星期六"

Case 2

Case 3

Case 4

Case 5

Case 6

Case 7

End Select

(2)请编写程序段,判断当天日期,如果是25日,则显示“请注意,明天可能有病毒发作”。

答案:参见asptemptj/chapter3/Date_,并打开浏览器,在其中输入localhost/asptemptj/chapter3/ Date_即可访问,清单如下:

清单Date_meg Date_. 判断当天日期

<%

If Day(Date())=25 Then

"请注意:明天可能有病毒发作。"

End If

%>

(3)请编写程序段,随机产生一个0到9的整数。如果是偶数,则在页面上输出“生成的是偶数”,否则输出“生成的是奇数”。

答案:参见asptemptj/chapter3/,并打开浏览器,在其中输入localhost/asptemptj/chapter3/ 即可访问,清单如下:

清单 判断奇偶数码

<%

Dim s

s=Int(10 * Rnd())

If (s Mod 2)=0 Then

%>

"生成的是偶数"

"生成的是奇数"

Else

End if

15

(4)S=12+32+52+…+992,请利用两种循环语句编写程序,计算S的值。

答案:参见asptemptj/chapter3/,并打开浏览器,在其中输入localhost/asptemptj/chapter3/ 即可访问,清单如下:

清单Cycle 计算平方和

<%

'第1种算法:

Dim I,Sum

Sum=0

For I=1 To 99 Step 2

Sum=Sum+I^2

Next

"S=" & Sum

%>

<%

'第2种算法

I=1

Sum=0

Do While I<=99

Sum=Sum+I^2

I=I+2

Loop

"S=" & Sum

%>

(5)请编写函数计算a到b的立方和,并举例调用,调用时a、b分别为3和6。

答案:参见asptemptj/chapter3/Cute_,并打开浏览器,在其中输入localhost/asptemptj/chapter3/ Cute_即可访问,清单如下:

清单Cute_ 计算立方和

<%

'下面是函数

Function lifanghe(a,b)

16

Dim Sum,I

Sum=0

For I=a To b

Sum=Sum+I^3

Next

lifanghe=Sum

End Function

'下面是主程序,用来调用

Dim S

S=lifanghe(3,6)

"立方和=" & S

%>

(6)请编写函数能够随机产生从a到b之间的整数,并举例调用。

答案:参见asptemptj/chapter3/Rnd_,注意产生a到b之间随机整数的写法为:Int((b-a+1)*Rnd)+a,并打开浏览器,在其中输入localhost/asptemptj/chapter3/

Rnd_即可访问,清单如下:

清单Rnd_ab Rnd_ 产生从a到b之间随机数

'下面是主程序,用来调用

Dim S

S=Rndab(3,10)

"产生3到10之间的一个随机整数为" & S

%>

<%

'下面是函数

Function Rndab(a,b)

Rndab=Int((b-a+1)*Rnd)+a

End Function

(7)请结合示例3-13开发一个函数,使其能实现Join函数的功能。

答案:参见asptemptj/chapter3/,并打开浏览器,在其中输入localhost/asptemptj/chapter3/即可访问,清单如下:

17 清单Join 构造Join函数

<% Option Explicit

<%

'强制声明变量%>

'下面是将全部数组元素连接在一起的函数

Function join_string(S_temp)

Dim strSum,Item

For Each Item in S_temp

strSum=strSum & Item

Next

join_string=strSum

'执行循环,取出每个元素

End Function

'下面是主程序,用来调用

Dim S(3) '定义一个数组

Dim Return_string

S(0)="a"

S(1)="b"

S(2)="c"

S(3)="--end--"

Return_string=join_string(S)

"全部数组元素连接成的字符串为" & Return_string

%>

(8)请在示例3-14的基础上增加一段代码,从而可以计算所有数组元素的平方和。(提示:请用嵌套循环)

答案:参见asptemptj/chapter3/,并打开浏览器,在其中输入localhost/asptemptj/chapter3/ 即可访问,清单如下:

清单Pingfanghe 计算所有数组元素的平方和

<% Option Explicit

<%

Dim intA(9,9),intSum

Dim I,J

For I=0 To 9

'声明一个10行10列的二维数组

'I是外层循环计数器变量,J是内层循环计数器变量

'外层循环

18

'强制声明变量%>

For J=0 To 9

Next

'外层循环

'内层循环

'给每一个元素赋初值10

'内层循环

'给每一个元素赋初值10 intA(I,J)=10

Next

For I=0 To 9

For J=0 To 9

Next

intSum=intSum+intA(I,J)^2

Next

"该数组元素的平方和是"& intSum

%>

(9)(选做题)有100个人吃100个馒头,大人1人吃4个,孩子4人吃1个,问有多少个大人和多少个孩子?(提示:使用嵌套循环和条件语句)

答案:参见asptemptj/chapter3/,并打开浏览器,在其中输入localhost/asptemptj/chapter3/ 即可访问,清单如下:

清单Bread 计算吃馒头的人数

大小和尚吃馒头问题

<%

Dim I,J,ren,mantou

For I=1 To 100 '大和尚从1到100循环

%>

For J=1 To 100 '小和尚从1到100循环

ren=I+J '计算总人数

mantou=I*4+J*0.25 '计算总馒头数

If ren=100 And mantou=100 Then

"

大和尚=" & I & " 小和尚=" & J

End If

Next

Next

19 (10)(选做题)其实VBScript也可以在客户端运行的,请大家参考VBScript专门教程进行学习,尤其要注意其中的MsgBox函数。

答案:略。

20 第4章 Request和Response对象

1. 选择题(可多选)

(1)对于Request对象,如果省略集合,如Request("strName"),将按什么顺序依次检查是否有信息传入?

A. Form、QueryString、Cookies、ServerVariables、ClientCertificate

B. QueryString、Form、Cookies、ServerVariables、ClientCertificate

C. Cookies、QueryString、Form、ServerVariables、ClientCertificate

D. Form、QueryString、Cookies、ServerVariables、ClientCertificate

答案:B

(2)Request对象的QueryString、Form、Cookies集合获取的数据子类型分别是?

A. 数字、字符串、字符串 B. 字符串、数字、数字

C. 字符串、字符串、字符串 D. 必须根据具体值而定

答案:D

(3)在表单中,下列哪个属性用于设定表单的提交方法?

A. method B. action C. POST D. GET

答案:A

(4)若表单提交时采用GET方法,则下面哪种集合可以获取表单元素的值?

A. ("元素名") B. tring("元素名")

C. ("元素名") D. tring("元素名")

答案:B

(5)下面哪种集合可以获取查询字符串中的信息?

A. Response("元素名") B. Request("元素名")

C. ("元素名") D. tring("元素名")

答案:BD

(6)请问下面语句执行完毕后,页面上显示内容是什么?

<% "新浪" %>

A. 新浪 B. 新浪

C. 新浪(超链接) D. 错误信息

答案:C

(7)请问下面程序段执行完毕,页面上显示的内容是什么?

<%

="北京"

="上海"

%>

A. 北京上海 B. 北京(换行)上海

C. 北京 D. 错误信息

答案:D

解释:当使用简写方式输出时,每一句两边都要加上<%和%>。

(8)请问下面程序段执行完毕,页面上显示的内容是什么?

<%

21 "a": : "b":

"c": : "d"

%>

A. ac B. cd C. bd D. ad

答案:A

解释:Flush方法会立即输出内容;Clear方法会清空缓冲区中的内容;End方法会结束输出。

(9)Response对象的什么方法可以将缓冲区中的页面内容立即输出到客户端?

A. Write B. End C. Clear D. Flush

答案:D

(10)下列哪个集合可以返回客户端IP地址?

A. Request("REMOTE_ADDR") B. Variables("REMOTE_ADDR")

C. Variables("IP") D. Variables("LOCAL_ADDR")

答案:AB

2. 问答题

(1)请问是否可以将的扩展名改为.htm?

答案:可以,因为4-1中只是将表单信息提交给,本身并没有动态代码,所以可以修改。

(2)假如变量a="b",那么Request(a)和Request("a")返回值一样吗?

答案:不一样。因为用代入法,Request(a)是获得名称为b的变量的值,而Request("a")则是获得名称为a的变量的值。

(3)当表单分别以POST方法和GET方法提交时,获取数据的方法有什么区别?

答案:用POST 方法提交表单,获取数据用的是方法;而用GET 方法提交表单,获取数据用的是tring方法。

(4)请问有什么方法可以检验各种集合返回值的数据子类型?

答案:一般集合返回值的数据子类型是取决于集合值本身的类型,因此是没有一个固定的方法可以判断出某集合返回值的数据子类型,但常用的有三个函数IsNumeric、IsDate、IsNull可以辅助来判断一下返回值的数据子类型。

(5)请结合第1章讲的WWW的工作原理来讲述的运行过程?

答案:当用户在浏览器中输入网址第1次访问本文件时,服务器端就会从头到尾解释执行本文件。首先输出表单中的元素内容(文字、文本框、按钮),然后执行If判断语句,此时因为是第一次访问该文件,还没有提交表单,所以("txtA")="",("txtB")="",If语句中条件表达式的返回值为False,因此执行Else后面输出语句;接下来当用户输入两个数并提交表单后,此时就会第2次访问本文件,服务器端就会再次从头到尾解释执行本文件,先输出表单元素内容,然后再次执行If判断语句,此时因为已经提交了表单,所以("txtA")=输入的值, ("txtB")=输入的值,If语句中条件表达式的返回值为True,因此执行运算语句,最后输出两个数的和。

(6)请简述Response的Write方法的两种写法的区别及注意事项。

答案:两种写法分别为和<%=%>,前者多用于在VBScript代码中,用来向客户端输出服务器端的信息;后者则多用于大量HTML代码中嵌入少量VBScript代码的时候。

(7)请简述Redirect方法的工作原理?

答案:Redirect是指将网页重新定向到另一个新的网址,该定向发生在客户端,当执行到该语句时,客户端浏览器就会向相应的服务器端发出一个请求,然后该服务器

22 端就会返回这个新的页面给客户端。

(8)请问Redirect方法和超链接的区别是什么?

答案:两者都可以引导用户至另一个页面,但是超链接必须要用户单击超链接才行,而Redirect可以自动引导用户至另一个页面。

(9)请问当使用Redirect方法时,为什么有时要在文件开头加“=True”语句?在Windows 2000以上系统中一般需要加吗?

答案:因为如果=False,就表示将页面直接输出到客户端,那么如果已经输出了部分页面内容到客户端,又想重定向到另一个页面,这是不允许的。而令Buffer等于True后,将把页面先输出到缓冲区,在缓冲区中则可以随时重定向页面,Windows 2000以上操作系统中则默认为True,所以Windows 2000以上系统中一般不需要加。

(10)本章中都有哪些方法可以将一个变量从一个页面传递到另一个页面?

答案:可以利用表单提交和在URL地址后面加上变量进行传递,也可以使用Cookie传递变量。

3. 实践题

(1)请将和合并为一个页面。

答案:参见asptemptj/chapter4/,注意其中判断表单是否提交的写法,并打开浏览器,在其中输入localhost/asptemptj/chapter4/ 即可访问,清单如下:

清单Register 合并和为一个页面

请填写个人信息

姓名:

密码:

性别:

音乐

旅游

爱好:计算机

职业:

简述:

23 <%

'下面的条件语句表示只有提交了表单才进行显示信息,请注意这个小技巧。

If ("page")=1 Then

Dim strName,strPwd,strSex,strLove,strCareer,strIntro '为了引用方便,声明变量

strName=("txtName")

strPwd=("txtPwd")

strSex=("rdoSex")

strLove=("chkLove")

strCareer=("sltCareer")

strIntro=("txtIntro")

"

下面是您的个人信息

"

"

姓名:" & strName

"

密码:" & strPwd

"

性别:" & strSex

"

爱好:" & strLove

"

职业:" & strCareer

"

简介:" & strIntro

End if

%>

(2)请修改第2章的,将表单提交给自身。并判断:如果今天正好是用户的生日,就输出祝贺信息。

答案:参见asptemptj/chapter4/, 并打开浏览器,在其中输入localhost/asptemptj/chapter4/ 即可访问,清单如下:

清单Rewrite2-6 修改

用户注册表单示例

用户注册

以下内容请如实填写,其中带有*号的栏目是必须填写的

请选择用户名:

24

*

请输入你的密码:

*(密码不能超过8位)

<%

If ("txtUserId")<>"" Then

Dim txtYear,txtMonth,txtDay '为了引用方便,声明变量

txtYear=("txtYear")

'前面的txtYear是一个变量,后面的txtYear是表单中一个元素的名字,不是一

'回事,名字可以一样,也可以不一样,这里主要是为了方便记忆。

25

请再次输入密码:

*

请输入你的姓名:

*

请选择你的性别:

女*

请输入你的生日:

日*

请选择你的最高学历:

请选择你的爱好:

读书

看电影

旅游

其他

你有什么意见吗?

%>

txtMonth=("txtMonth")

txtDay=("txtDay")

If Cint(txtYear)=Cint(Year(Date())) and Cint(txtMonth)=Cint(Month(Date()))

and Cint(txtDay)=Cint(Day(Date())) then

"祝您生日快乐!"

End if

End If

(3)请开发一个页面,显示来访者的IP地址。并判断:如果IP地址以202.112开头,则显示欢迎信息;否则显示为非法用户,并终止执行程序。

答案:参见asptemptj/chapter4/Verify_, 并打开浏览器,在其中输入localhost/asptemptj/chapter4/ Verify_即可访问,清单如下:

清单Verify_ip Verify_显示来访者的IP地址

<%

Dim IP

IP=Variables("REMOTE_ADDR")

If Mid(IP,1,7)="202.112" Then

Else

%>

"您是非法用户"

"欢迎您"

End If

(4)请开发一个页面,让用户通过下拉列表框选择自己想要访问新浪、搜狐还是网易网站,用户提交选择结果后自动打开该网站。

答案:参见asptemptj/chapter4/,并打开

26 浏览器,在其中输入localhost/asptemptj/chapter4/ 即可访问,清单如下:

清单Navigation 网站导航

导航

快速导航

<%

If ("sltsite")<>"" Then

%>

ct ("sltsite")

End If

请选择您要访问的网站:

(5)请开发一个页面,其中可以输入姓名和年龄,并选择有效期为1周、1月或1年。提交表单后将姓名和年龄保存到Cookie中,并按选择设置有效期。

答案:参见asptemptj/chapter4/Cookie_,清单如下:

清单Cookie_valid Cookie_ Cookie有效期设置

请输入姓名

请输入年龄

请选择Cookie有效期

<%

'如果提交表单后执行如下语句

If ("user_name")<>"" And ("old")<>"" Then

%>

s("user")("user_name")=("user_name")

s("user")("old")=("old")

s("user").Expires=DateAdd("d",("sltDate"),Date())

End If

(6)请开发一个简单的在线考试程序,包括5道单选题和5道多选题,单击【交卷】按钮后就可以根据标准答案在线评分。

答案:参见asptemptj/chapter4/,并打开浏览器,在其中输入localhost/asptemptj/chapter4/ 即可访问,清单如下:

清单Exam 在线考试

一、单选题

1.请问在ASP中如果要向客户端输出内容,因该使用什么对象?

Request

Response

Session

Application

2.请问下面哪个函数可以求余数?

Rnd

Int

Mod

Mid

3.请问隐藏文本的类型为?

28

Hidden

Text

Password

Textarea

4.请问下面哪个函数可以将数值转换为字符串?

Cdate

Cint

Cstr

Cdbl

5.请问"1"+"1"=?

"11"

11

1

2

二、多选题

1.请问搜索引擎主要有哪些?

美术网

教育网

新浪

Google

2.请问以下URL中,从形式上看正确的是?

value="A">/history/1998/

value="B">/news/

ftp://

ftp:///news/

文档包含的两个部分是指?

文档头部

标题

注释

文档主体

29

'注意获取的值中间用逗号和空格隔开

If ("m1")="C, D" Then

30

<%

If Request("page")=1 Then '如果提交了表单,就执行下面的判断语句

Dim Grade '分数 (单选答案:BCACD;多选答案:CDABCDADBACD)

Grade=0

If ("q1")="B" Then

Grade=10

End If

If ("q2")="C" Then

Grade=Grade+10

End If

If ("q3")="A" Then

Grade=Grade+10

End If

If ("q4")="C" Then

Grade=Grade+10

End If

If ("q5")="D" Then

Grade=Grade+10

End If

4.在超链接标记中,下面哪个属性用来指定超链接路径?

src

href

method

action

5.关于网页中的图像,下列说法正确的是?

图像标记必须成对出现

href属性用于指定所要显示图像文件的路径

src 属性用于指定所要显示图像文件的路径

alt用于指定显示在图像上的文字

%>

Grade=Grade+10

End If

If ("m2")="A, B, C, D" Then

Grade=Grade+10

End If

If ("m3")="A, D" Then

Grade=Grade+10

End If

If ("m4")="B" Then

Grade=Grade+10

End If

If ("m5")="A, C, D" Then

Grade=Grade+10

End If

"您的分数为" & Grade

End If

(7)(选做题)请开发一个程序,当用户第一次访问时,需在线注册姓名和性别,然后把信息保存到Cookie中。当该用户再次访问时,则显示“某某先生/小姐,您好,您是 ”的欢迎信息。(提示:可以用多个页面实现)

答案:参见asptemptj/chapter4/, 并打开浏览器,在其中输入localhost/asptemptj/chapter4/ 即可访问,清单如下:

清单Cookie 利用Cookie显示欢迎信息

<%

If s("user")="" Then

%>

请输入姓名

请选择性别

31

'如果是第1次访问,就让客户填写有关信息

"您好,您是第 1次访问本站,请填写个人信息"

<%

Elseif s("user")("vNumber")>=1 Then

'如果不是第1次访问,就令访问次数在原有次数上加1

Dim vNumber '定义一个访问次数变量

Dim user_name

Dim sex

vNumber=s("user")("vNumber")

user_name=s("user")("user_name")

sex=s("user")("sex")

If sex="男" Then

Else

sex_list="小姐"

End If

s("user")("vNumber")=vNumber+1 '将访问次数+1保存到Cookies中

s("user")("user_name")=user_name

s("user")("sex")=sex

s("user").Expires=#2010-11-1# '设置有效期为2年

s("user")("user_name") & sex_list & "您好,您是第"

& (vNumber+1) & "次光临本站"

End If

'如果提交表单后执行如下语句

sex_list="先生"

If ("user_name")<>"" And ("sex")<>"" Then

s("user")("user_name")=("user_name")

s("user")("sex")=("sex")

s("user")("vNumber")=1

s("user").Expires=#2010-11-1#

End If

%>

32 第5章 Session和Application对象

1. 选择题(可多选)

(1)请问下面程序段执行完毕,变量c的值是?

<% Session("a")=1: Session("b")=2: c=Session("a")+Session("b") %>

A. 12 B. 3 C. ab D. 以上都不对

答案:B

(2)请问下面语句执行完毕后,变量c的值是?

<% Dim a,c: a="b": Session("a")= 1: Session(a)= 2 : c=Session("b") %>

A. 1 B. 2 C. 3 D.以上都不对

答案:B

(3)请问下面程序段执行完毕后,变量c的值是?

<% Dim a: a="b": Session(a)=1: Session("b")=2: c=Session(b) %>

A. 1 B. 2 C. 3 D. 空(Empty)

答案:D

解释:变量b没有给定义,此时Session(b)实际上为空。

(4)请问下面程序段执行完毕,变量b的值是?

<% Session("a")=1: n: Dim b: b=Session("a") %>

A. 0 B. 1 C. 空(Empty) D. 程序出错

答案:B

解释:执行n语句后,Session对象并没有立刻被清除,当前页面中仍然可以使用Session中的信息,不过在其他页面中就不可以使用了。

(5)Session对象的默认有效期为多少分钟?

A. 10 B. 15 C. 20 D. 30

答案:C

(6)在同一个应用程序的页面1中执行t=30,那么在页面2中执行 t,则输出值为多少?

A. 15 B. 20 C. 25 D. 30

答案:D

(7)Application对象的默认有效期为多少分钟?

A. 10 B. 15 C. 20 D. 从应用程序启动到结束

答案:D

(8)在应用程序的各个页面中传递值,可以使用哪几个内置对象?

A. Request B. Response C. Session D. Application

答案:CD

(9)Session变量和Application变量的返回值的数据子类型是?

A. 字符串、字符串 B. 数值、字符串

C. 字符串、数值 D. 根据其中的数据的类型决定

答案:D

(10)下面哪条语句可以创建一个对于访问网站的所有用户均有效的变量intAll?

A. Session("intAll")=10 B. Application("intAll")=10

33 C. Public Session("intAll") D. Public Application("intAll")

答案:B

(11)在一个应用程序中,文件可以有几个?

A. 0 B. 1 C. 2 D. 无限多个

答案:B

(12)在一个用户会话过程中,会触发几次Session_OnStart事件?

A. 1 B. 2 C. 3 D.无数次

答案:A

(13)下列哪种情况下可能会触发Session_OnEnd事件?

A. 用户关闭了浏览器 B. 用户打开网页后离开电脑超过了20分钟

C. 修改了文件 D. 在程序中执行了Abandon方法

答案:ABCD

解释:四种情况都可能触发Session_OnEnd事件,只是A不会立即触发,而是等待TimeOut规定的时间后才会触发。

(14)下面哪种情况下表示会话结束,并会清除当前Session对象?

A. 用户打开页面后就离开了电脑长达30分钟。

B. 用户打开页面后链接到了另外一个网站,之后也没有再返回本网站。

C. 用户打开页面后一直浏览该页面达30分钟,期间没有刷新页面。

D. 用户关闭了浏览器窗口。

答案:ABCD

(15)下面陈述正确的是?

A. 用户关闭浏览器窗口后就会立刻触发Session_OnEnd事件。

B. 在程序中执行n语句后,就会触发Session_OnEnd事件。

C. 弹出的新窗口和父窗口将使用不同的Session对象。

D. 用户不停地刷新页面,则Session对象永远不会过期。

答案:BD

2. 问答题

(1)名词解释:会话、状态

答案:会话——是指用户访问网站的过程;状态,就是指会话过程中的一些变量、设置等信息。

(2)请简述Session对象的工作原理?

答案:当每一个用户开始访问网页时,服务器端就会给该用户建立一个Session对象,并且在服务器端内存中给他分配一块区域,用来存储该用户的信息。当该用户结束访问时,服务器端就会清除这个Session对象,并释放相应的内存区域。

(3)如果客户端浏览器不支持Cookie,那么能支持Session吗?

答案:不能,因为每建立一个Session对象,服务器端就会生成一个长整数形式的ID,并把这个ID自动保存到客户端的Cookie中。当客户端再次向服务器端发送信息时,服务器端就会根据这个ID返回相应的Session信息。因此如果不支持Cookie,则无法找到这个ID,也就不会返回相应的Session信息

(4)请简述Session对象建立和清除的时间?

答案:当用户打开一个浏览器窗口开始访问网站时,就会开始一个会话,并建立一个Session对象;Session对象的清除是由它的有效期决定的,默认为20分钟。如果客户端在20分钟内没有向服务器端发出任何请求信息,就表示这个会话结束了,Session对象就会

34 被清除。

(5)请简述Session对象和Application对象各自的作用和最主要的区别。

答案:Session对象是记录单个用户的信息,而Application是记载所有用户的共享信息;Session的有效期默认为20分钟,Application从服务启动到服务结束均有效。

(6)在一个页面中,Session变量、Application变量、普通变量和数组变量的名称都可以一样吗?

答案:Session变量、Application变量、普通变量的名称可以一样,但普通变量和数组变量名称不能一样。

(7)请比较Cookie、Session、Application对象的有效期?

答案:Cookie和Session都是有有效期限制的,可以根据实际情况进行设定。而Application对象没有有效期的限制,从应用程序启动后第一个用户开始访问到所有用户都结束访问,它一直是有效的。

(8)请问什么信息适合用Session保存,什么信息适合用Application保存?

答案:保存单个用户的信息时,用Session,保存共享信息时,用Application。

(9)请问文件的名称、位置、语法有什么规定?

答案:每一个应用程序只能有零个或一个文件,而且它的名字和位置都是固定的,它必须被放在应用程序的根目录下。

(10)请问在文件中可以使用语句吗?

答案:文件中不能包含语句。因为该文件只是被调用,根本不会显示在页面上,所以不能输出任何内容。

(11)就5.3.2节示例来说,如果没有添加虚拟目录,应该放在什么位置?

答案:应该放到C:inetpubwwwroot下。

(12)请问怎样才能让一个Session对象永远不过期?(提示:可以使用自动刷新)

答案:将页面设置为自动刷新,比如可以用下面代码实现:在区域中加入

http-equiv="refresh" content="10">,其中content="10"指每隔10秒刷新一次页面. 这个时间间隔必须小于t(一般默认为20分钟),这样Session对象就永远不会过期了。

3. 实践题

(1)请在个人主页上加上当前在线人数和总访问人数。

答案:参见书中5.3.2节清单5-9和5-10.

(2)请编写两个页面,在第一个页面中用户要输入姓名,然后保存到Session中,然后自动引导到第二个页面。在第二个页面中读取该Session信息,并显示欢迎信息。如果用户没有在第一页登录就直接访问第二页,要将用户重定向回第一页。

答案:参见asptemptj/chapter5/和,并打开浏览器,在其中输入localhost/asptemptj/chapter5/ p即可访问,清单如下:

清单5-3-2a 利用Session保存信息

请填写个人信息

35

<%

If ("user_name")<>"" Then

%>

Session("user_name")=("user_name")

End If

姓名:

清单5-3-2b 利用Session显示欢迎信息

<%

If Session("user_name")="" Then

%>

<%

%>

Session("user_name") & "您好,欢迎光临"

ct ""

End If

(3)请在示例的基础上添加一些代码,使得每位用户访问期间不管怎么刷新页面都只计数1次。(提示:结合Session对象,但不要使用文件)

答案:参见asptemptj/chapter5/,并打开浏览器,在其中输入localhost/asptemptj/chapter5/即可访问,清单如下:

清单5-3-3 显示访问次数

我的主页

<%

If session("a")<>1 Then '给每个用户设定一个session("a")变量

36

'先锁定

Application("intAll")=Application("intAll")+1

session("a")=1

'给Application变量赋值

'解除锁定

End If

Dim intVisit

intVisit=Application("intAll")

%>

'获取Application变量

"

您是第" & intVisit & "位访客。"

(4)请编写程序实现一个简单的聊天室,要能显示发言人姓名,发言内容、发言人IP地址和发言时间。另外,要求过滤掉用户输入的“

”等特殊字符。

答案:参见asptemptj/chapter5/chat,并打开浏览器,在其中输入localhost/asptemptj/chapter5/chat/即可访问

(5)(选做题)请参考5.1.4节的方法输出ServerViarables集合中所有的环境变量。

答案:参见asptemptj/chapter5/,并打开浏览器,在其中输入localhost/asptemptj/chapter5/即可访问。

清单5-3-4 输出ServerViarables集合中所有的环境变量

<%

Dim Item

For Each Item In Variables

%>

"名字:" & Item & ",值:" & Variables(Item) & "

"

Next

(6)(选做题)在5.1.4节中采用For Each…Next循环输出全部Session变量时,如果某Session变量是数组就会出错,请大家修改使之能正确运行。(提示:先判断是否数组)

答案:参见asptemptj/chapter5/,并打开浏览器,在其中输入localhost/asptemptj/chapter5/ 即可访问,清单如下:

清单5-3-5 5-3-5 输出全部Session变量

<%

session("a")="aaa"

session("b")="bbb"

dim array_a(2) '定义一个数组

array_a(0)="array1"

array_a(1)="array2"

array_a(2)="array3"

37 session("c")=array_a '将该数组存放到session变量中。

Dim Item

For Each Item In ts

%>

If Not isArray(ts(Item)) Then

"名字:" & Item & ",值:" & ts(Item) & "

"

dim Array_temp '定义一个数组变量

Array_temp=ts(Item)

For i=0 to Ubound(Array_temp)

"名字:" & Item & ",值:" & Array_temp(i) & "

"

Next

Else

End if

Next

38 第6章 Server对象

1. 选择题(可多选)

(1)如果设置ScriptTimeOut为60秒,请问脚本最长执行时间为多少秒?

A. 30 B. 60 C. 90 D. 300

答案:B

(2)如果在页面1中添加TimeOut=300,并在同一网站的页面2中添加a=TimeOut,请问变量a的值等于多少?

A. 60 B. 90 C. 300 D. 以上都不对

答案:B

解释:ScriptTimeOut属性只对当前页面有效,且它的默认值是90秒。

(3)在给对象变量赋值时,一般要使用下面哪个关键字?

A. Dim B. Set C. Public D. Private

答案:B

(4)执行语句a=code("

")后,变量a的值是?

A. p B.

C. "

" D. "<p>"

答案:D

解释:执行HTMLEncode后,<和>会被替换,所以结果为"<p>"。

(5)执行语句a=code(code("

"))后,变量a的值是?

A. "<

>" B. "<p>"

C. "<<p>>" D. "&lt;p&gt; "

答案:D

解释:因为要执行两次HTMLEncode操作。

(6)执行语句a=ode("b c")后,变量a的值是?(请注意其中空格)

A. b c B. b+c C. "b+c" D. "b c"

答案:C

解释:此时变量a的值实际上是"b+c",仍然是一个字符串。

(7)如果要返回应用程序根目录的物理路径,那么MapPath方法的参数可以是?

A. "/" B. "" C. "." D. "C:Inetpubwwwroot"

答案:AB

解释:一般不区分”/”和””。

(8)在中,以下哪些方法可以返回的物理路径?

A. h("") B. h("/asptemp/chapter6/")

C. h(".") D. h("")

答案:ABD

(9)如果将中的Execute方法替换为Transfer,那么中的ScriptTimeOut属性值是?

A. 90 B. 100 C. 300 D. 以上都不对

答案:B

解释:Transfer和Execute都可以把一些环境变量传递过去。

(10)如果将中的e方法替换为ct,那么中

39 的ScriptTimeOut属性值是?

A. 90 B. 100 C. 300 D. 以上都不对

答案:A

解释:Redirect不能把一些环境变量传递过去,因此输出的是默认值90.

2. 问答题

(1)请问什么时候可能会用到HTMLEncode方法?

答案:在需要输出HTML语句和<、>和空格等HTML特殊字符时会用到该方法。

(2)请简述Execute、Transfer和Redirect方法的主要区别?

答案:三者都是停止执行当前网页,转到新的网页执行。主要区别有:

一是,Redirect 和Transfer跳转到新网页后,不会再返回原网页,而Execute则会在执行完新网页后,返回原网页继续执行Execute方法后面的语句。

二是,Redirect的重定向实际发生在客户端,而Execute和Transfer方法的重定向发生在服务器端,效率更高。

三是,Redirect语句不能把一些环境变量一起传递到新网页中,而Execute和Transfer可以。

四是,Redirect方法可以转向一个网页或其他网站,而Execute和Transfer方法一般只能转到同一个应用程序的其他文件。

(3)对于6.2.6节的例子来说,假如向提交了表单,那么在中可以用获取表单信息吗?

答案:不能用获取到表单上的信息,因为表单是提交到的,而在中已经用Redirect跳转到了另一个页面,跳转后和6-4已经没有关系了,因此无法获得。

(4)接着上题,在中声明的普通变量,在中可以引用吗?

答案:不能,原因同上。

3. 实践题

(1)请修改5.2.2节的聊天室例子,使其能够原样输出用户输入的HTML代码。

答案:使用HtmlEncode方法原样输出HTML代码,参见asptemptj/chapter6/Rewrite_chat,并打开浏览器,在其中输入localhost/asptemptj/chapter6/ Rewrite_chat /即可访问。

(2)请结合第4章习题中开发的考试程序,增加考试HTML知识的题目。比如:

请问换行标记是什么?

A.

B.

C.


D.

答案:参见asptemptj/chapter6 /Rewrite_, 并打开浏览器,在其中输入localhost/asptemptj/chapter6/ Rewrite_即可访问,清单如下:

清单Rewrite_exam Rewrite_ 在线考试

一、单选题

40

1.请问在ASP中如果要向客户端输出内容,因该使用什么对象?

Request

Response

Session

Application

2.请问下面哪个函数可以求余数?

Rnd

Int

Mod

Mid

3.请问隐藏文本的类型为?

Hidden

Text

Password

Textarea

4.请问下面哪个函数可以将数值转换为字符串?

Cdate

Cint

Cstr

Cdbl

5.请问"1"+"1"=?

"11"

11

1

2

二、多选题

1.请问搜索引擎主要有哪些?

美术网

教育网

新浪

Google

2.请问以下URL中,从形式上看正确的是?

41

<%

If Request("page")=1 Then '如果提交了表单,就执行下面的判断语句

Dim Grade '分数 (单选答案:BCACD;多选答案:CDABCDADBACD)

Grade=0

If ("q1")="B" Then

42

/history/1998/

/news/

ftp://

ftp:///news/

3.请问换行标记是什么?

<%=code("

")%>

<%=code("


")%>

<%=code("")%>

<%=code("

")%>

4.在超链接标记中,下面哪个属性用来指定超链接路径?

src

href

method

action

5.关于网页中的图像,下列说法正确的是?

图像标记必须成对出现

href属性用于指定所要显示图像文件的路径

src 属性用于指定所要显示图像文件的路径

alt用于指定显示在图像上的文字

%>

Grade=10

End If

If ("q2")="C" Then

Grade=Grade+10

End If

If ("q3")="A" Then

Grade=Grade+10

End If

If ("q4")="C" Then

Grade=Grade+10

End If

If ("q5")="D" Then

Grade=Grade+10

End If

'注意获取的值中间用逗号和空格隔开

If ("m1")="C, D" Then

Grade=Grade+10

End If

If ("m2")="A, B, C, D" Then

Grade=Grade+10

End If

If ("m3")="A, D" Then

Grade=Grade+10

End If

If ("m4")="B" Then

Grade=Grade+10

End If

If ("m5")="A, C, D" Then

Grade=Grade+10

End If

"您的分数为" & Grade

End If

(3)假如为文件夹C:asptempasptempchapter6添加虚拟目录temp6,请根据该虚拟目录改写。

43 答案:参见asptemptj/chapter6 /Rewrite_,并打开浏览器,在其中输入localhost/temp6/ Rewrite_即可访问,清单如下:

清单Rewrite_6-3 Rewrite_ 改写6-3

<%

'下面转换两个特殊的路径

h("/") & "

"

h(".") & "

"

'下面将绝对路径转换为物理路径

h("/temp6/") & "

"

h("/temp6/") & "

"

h("/temp6/temp6/") & "

"

h("/asptemp/chapter5/") & "

"

'下面将相对路径转换为物理路径

h("") & "

"

h("") & "

"

h("../chapter5/")

%>

'转换自身

'转换同文件夹下的文件

'转换子文件夹下的文件

'转换应用程序根目录

'转换当前目录

h("temp6/") & "

"

'转换其他文件夹下的文件

(4)(选做题)请自己开发一个函数,可以基本实现HTMLEncode方法的功能。(提示:使用Replace函数替换“&、>和<”为对应的字符实体)

答案:参见asptemptj/chapter6 /, 清单如下:

清单HtmlEncode 实现HTMLEncode方法的函数

<%

function HTMLEncode(fstring)

fstring=replace(fstring,">",">")

fstring=replace(fstring,"<","<")

fstring=replace(fstring,CHR(32)," ")

fstring=replace(fstring,CHR(13),"")

fstring=replace(fstring,CHR(10)&CHR(10),"

")

fstring=replace(fstring,CHR(10),"

")

HTMLEncode=fstring

end function

44 %>

45 第7章 数据库基础知识

1. 选择题(可多选)

(1)下面哪条语句可以查询strName为"萌萌"且是2008年8月8日前注册的用户?

A. Select * From tbAddress Where strName=萌萌And dtmSubmit<#2008-8-8#

B. Select * From tbAddress Where strName="萌萌" And dtmSubmit<2008-8-8

C. Select * From tbAddress Where strName="萌萌" And dtmSubmit<#2008-8-8#

D. Select * From tbAddress Where strName="萌萌" Or dtmSubmit<#2008-8-8#

答案:C

(2)下面哪条语句可以查询姓“赵”并且年龄等于22岁的用户,请问用哪条语句?

A. Select * From tbAddress Where strName="赵" And intAge=22

B. Select * From tbAddress Where strName like "赵%" And intAge="22"

C. Select * From tbAddress Where strName like "赵%" And intAge=22

D. Select * From tbAddress Where strName like "%赵%" And intAge=22

答案:C

(3)要在tbAddress表中插入记录,下面哪条语句是正确的?

A. Insert Into tbAddress(strName,strTel) Values("萌萌","6545632")

B. Insert Into tbAddress(strName,strEmail) Values("萌萌", "")

C. Insert Into tbAddress(strName,strEmail) Values("萌萌",NULL)

D. Insert Into tbAddress(strName,intAge) Values(萌萌,22)

答案:ABC

(4)要在tbAddress表中更新记录,下面哪条语句是正确的?

A. Update tbAddress Set strName="萌萌",intAge=22 Where ID=2

B. Update tbAddress Set strName=萌萌,intAge=22 Where strName=萌萌

C. Update tbAddress Set dtmSubmit=2008-10-1 Where strName="萌萌"

D. Update tbAddress Set intAge=18

答案:AD

解释:选项D没加条件语句,将会对表中所有记录的intAge都做更新。

(5)下面哪个聚合函数可以用来返回数据表中记录总数?

B. Avg C. Sum D. Max

答案:A

(6)执行Select Max(intAge) As MaxAge,Min(intAge) As MinAge From tbAddress语句后,会返回多少条记录?

A. 0 B. 1 C. 2 D. 不能确定

答案:B

(7)执行Select Count(*) As Total From tbAddress Group By intAge语句后,会返回多少条记录?

A. 0 B. 1 C. 2 D. 与intAge的值有关

答案:D

(8)执行Delete From tbAddress语句后,共删除多少条记录?

46 A. 0 B. 1 C. 若干条 D. 全部

答案:D

(9)执行Delete From tbAddress Where strName=“萌萌”语句后,共删除多少条记录?

A. 0 B. 1 C. 若干条 D. 全部

答案:C

解释:因为如果有姓名相同的,就都会删除。

(10)目前常用的数据库管理系统属于?

A. 关系型 B. 层次型 C. 网状型 D. 结构型

答案:A

2. 问答题

(1)请论述为什么要采用数据库来管理数据?

答案:因为数据库其实就是把各种各样的数据按照一定的规则组合在一起形成的“数据”“集合”,而根据这种规则就可以很快捷的找出我们所需要的数据。

(2)请思考数据表中自动编号字段和主键字段的作用?

答案:自动编号可以自动递增或随机产生一个整数,常用来自动产生唯一编号。

主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。此外,主键常常与外键构成参照完整性约束,防止出现数据不一致。

(3)在中strName适合作为主键字段吗?

答案:不适合,因为姓名也可能会重复,主键字段要求不能重复。

(4)如果想更新记录,可以不可以先删除再添加记录?这样有什么缺点?

答案:可以采用先删除后添加的方式来代替更新记录,但是这样做的缺点是会使自动编号字段有所改变,不能恢复成原来的自动编号。

(5)设置数据源后,如果移动了Access数据库的位置,还能正常使用吗?

答案:不能,必须重新设置数据源,否则就找不到该数据库了。

3. 实践题

(1)请按照本章步骤自己建立通讯录数据库,并为其设置数据源addr。

答案:参见,数据源设置请参考书中7.4节进行设置。

(2)请在数据库中建立查询qryTest,并将7.3节中讲的SQL语句逐条输入到该查询窗口中测试。

答案:请参考中查询qryTest。

(3)在组合查询中提到一个用户信息数据库,在第9章中还会用到。请按以下步骤建立该数据库,保存为C:。

第一步:建立一张表tbUsers,表的结构如题7-1图所示。

47 题7-1图 表tbUsers的结构

第二步:建立第二张表tbLog,表的结构如题7-2图所示。

题7-2图 表tbLog的结构

第三步:建立完毕后,请在该表中输入若干条记录。

第四步:请在该表中建立一个查询qryTest,在其中执行7.3.1节中的组合查询语句。

第四步:请为该数据库设置数据源userinfo。

答案:参见asptemptjchapter7 。

48 第8章 ASP存取数据库

1. 选择题(可多选)

(1)就8.2节示例而言,下面哪个数据库连接字符串是正确的?

A. "Dsn=address"

B. "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & h("")

C. "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & h("asptemp

")

D. "Provider=.4.0;Data Source=" & h("asptemp

")

答案:ABCD

(2)在中,如果要查询thedate(时间变量)以后添加的记录,SQL字符串应为:

A. "Select * From tbAddress Where dtmSubmit>#thedate# "

B. "Select * From tbAddress Where dtmSubmit>#" & thedate & "# "

C. "Select * From tbAddress Where dtmSubmit>" & #thedate# & "

D. "Select * From tbAddress Where dtmSubmit>" & thedate

答案:B

(3)在中,如果要查询年龄大于theAge(数值变量)的人员,SQL字符串应该为:

A. "Select * From tbAddress Where intAge>theAge"

B. "Select * From tbAddress Where intAge>'" & theAge & "'"

C. "Select * From tbAddress Where intAge>" & 'theAge' & "

D. "Select * From tbAddress Where intAge>" & theAge

答案:D

(4)就本章示例而言,下面哪条SQL语句可以正确执行?

(其中 theName="卢红" theAge=22 theDate=#2008-8-8#)

A. "Select * From tbAddress Where strName=" & theName

B. "Select strName,intAge From tbAddress where strName='" & theName & "'"

C. "Select * From tbAddress Where intAge

D. "Select * From tbAddress Where dtmSubmit>#theDate#"

答案:B

(5)就本章示例而言,下面哪条SQL语句可以正确添加记录?

(其中 theName="卢红" theAge=22 theIntro="")

A. "Insert Into tbAddress(strName,intAge,strIntro) Values('theName',theAge,'theIntro')"

B. "Insert Into tbAddress(strName,intAge,strIntro) Values('" & theName & "'," &

theAge & ",'" & theIntro & "')"

C. "Insert Into tbAddress(strName,intAge,strIntro) Values(" & theName & "," &

theAge & "," & theIntro & ")"

D. "Insert Into tbAddress(strName,intAge,strIntro) Values('" & theName & "', '" &

theAge & "','" & theIntro & "')"

答案:BD

(6)就本章示例而言,下面哪条SQL语句可以正确更新记录?

49

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689306423a228355.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信