WEB开发技术 第一阶段学习指导
1,2,3章总结 分析 提高
From,吴教育
Email,wujiaoyu@21cn.com
Q Q,188128997
目标
? 学习 ASP需要注意的有关问题
? 需清楚的几个基本概念
? ASP程序编写要领
? VBScript重要函数在实际 WEB应用系统开
发中的应用
? ASP内置对象重点分析
一,学习 ASP应注意的几个问题
WEB开发技术( ASP)是一门实践性很强的课程,也是
一门将以前所学知识加以综合应用的一门课程。大家在学
习中应注意以下几点:
1.不要处处与VB作比较:实际上 vbscript 与 Vb有许
多不同,他没有VB那么多的组件因此代码编写比VB开
发更多。
2.ASP不是程序设计语言。它的代码编写限制更少,
因此养成好的习惯更重要。
3,尽量使用先进实用的开发环境。 DReamWave,Interdev
4.注意到网上查找资料。涉及的知识点很多;边干边学,
边查边做。
二、须清楚的几个概念
1,静态网页与动态网页。动态网页就是服务
器端可以根据客户端的不同请求或情况动
态产生网页内容。
– 可以动态产生页面 (脚本编程,DHTML)
– 支持客户端和服务器端的交互功能 (ASP,PHP)
如 p1.htm
如 p1.asp
二、须清楚的几个概念
p1.htm
<script language="vbscript">
Sub Changebtn()
document.login.time.value="现在时间," & time
//document.login.send.disabled=true
window.setTimeout "Changebtn",1000
end sub
</script>
<body onload="Changebtn">
……
</body>
</html>
二、须清楚的几个概念
p1.asp
<%
if request("send")<>"" then
response.write "你已经输入了用户名和密码 !"
end if
%>
二、须清楚的几个概念 (续 )
2,客户端与服务器端脚本程序 (Client/Sever)
在客户端执行的程序,如 p1.htm
在服务器端执行的程序,其生成一个
HTML文件并在客户端被执行,如 p1.asp
问1:是不是存在服务器端的程序,就是
服务器端运行的程序?
问2:将 p1.asp文件拷到客户端,其是否
可以在IE中直接运行?
动态网页的工作原理
接受请求
找到动态网页
发送网页
服务器端 运行动态网页,
生成静态网页
二、须清楚的几个概念 (续 )
? 例子 1-3,ASP的另一种格式
<body>
<script language=“Jscript” runat=“server”>
function sayhello()
{ response.write(“hello!,)
}
</script>
<% sayhello() %>
</body>
注:
(1)程序使用脚本语言,<script language=Jscript
runat=server>...</script>,runat=server 说明该脚本程序运行在服务
器端,否则其运行在客户端。结果为 hello!
(2)服务器端语句只可调用在服务器端定义的函数和子程序,不能调用
客户端定义的函数,反之也成立。
(3)如果上述程序中去掉 runat=server(或 runat="server"),则程序运行会
出错。
二、须清楚的几个概念 (续 )
? 例子 1-4,ASP的第三种格式
<html>
<head><title>ASP Script示例 </title></head>
<body>
This is the first sentence
<script LANGUAGE="JScript" RUNAT="server">
response.write("This is the second sentence.")
</script>
</body>
</html>
注:
(1) 程序运行结果为 This is the second sentence.This is the first
sentence.
(2) 服务器端的脚本程序会首先执行,因此才有上面的结果,
(3) 若将此脚本语句改为 <% response.write("...") %>结果会如何?
二、须清楚的几个概念 (续 )
? 例子 1-5:混合使用 ASP标记
<%@ LANGUAGE=“VBScript” %>
<body>
<script LANGUAGE=“JScript,RUNAT=”server”>
function sayhello()
{
response.write(“hello! world”)
}
</script>
<% for I=1 to 10
sayhello()
next
%>
</body>
注:
(1)程序运行结果是显示 10个 hello! world.目的是演示 VBSCRIPT与
JAVASCRIPT函数可以互相调用。
(2)<script language=..,runat=server>...</script>不能调用 <%,.,%>中定义的
函数,为什么?
(3)上述程序不会换行,若要换行,怎么办?
二、须清楚的几个概念 (续 )
? 3.document.write 与 response.write
前者用于客户端脚本程序输出
后者用于服务器端输出
见示例 p2.asp
<script language=vbs>
document.write "12345" & "<br>"
</script>
<% response.write "abcde" %>
二、须清楚的几个概念 (续 )
4.变量有效范围 与数据传递
? 网页变量,不能定义各网页共享的全局变

? VBScript中的变量均为可变型,一个数组中
的各元素类型也可不同
? 网页之间数据传递:
get,post,session,application,cookies或文件
方式等
三,ASP程序编写要领
一个简单的 ASP程序主要包括以下三个部分:
1,普通的 HTML文件,也就是普通的 Web的
页面内容。可以网页设计工具制作.
2,服务器端的 Script程序代码:位于 <%… %>
内的程序代码。
3,客户端的 Script程序代码:位于
<Script>… </Script>内的程序代码 (不含有
runat=“server”)。
三,ASP程序编写要领 (续 )
? 注释语句,vbscript用’号开头,jscript用 //,网页 <!-- -->
在 dreamwaver注意一下其用法对程序显示影响.
? 如何进行分行,同 VB,空格 +下划线 _,如
sql="insert into student
(tclass,username,truename,password,sex,email,universit
y,ip,regtime) values ('" & vtclass & "','" & vusername &
"','" & vtruename & "','" & vpassword & "','" & vsex & "','"
& vemail & "','" & vuniversity & "','" &
request.servervariables("remote_addr") & "','" & now &
"')"
正确写法是,见示例 I_register.asp(案例分析第七章程序 )
三,ASP程序编写要领 (续 )
? 输出语句用 <% = 表达式 %>好过用
<% response.write 表达式 %>
如在 dreamwave进行设计时,二者在设计窗
中表现不同,前者会更方便.
见示例 p3.asp
? 单引号与双引号的使用及省略,
三,ASP程序编写要领 (续 )
? 输出语句用 <% = 表达式 %>好过用
<% response.write 表达式 %>
如在 dreamwave进行设计时,二者在设计窗
中表现不同,前者会更方便.
见示例 p3.asp
? 单引号与双引号的使用及省略,
三,ASP程序编写要领 (p3.asp)
<% x1=123,x2=456:x3="web":x4="asp" %>
<center><p>用 =号方式处理输出数据 </p>
<table width="200" border="1">
<tr><td><% =x1 %></td><td><% =x2 %></td></tr>
<tr><td><% =x3 %></td><td><% =x4 %></td></tr>
</table>
<p>用 response.write 处理输出数据 </p>
<%
response.write "<table width='200' border='1'>"
response.write "<tr><td>" & x1 & "</td><td>" & x2 & "</td></tr>"
response.write "<tr><td>" & x3 & "</td><td>" & x4 & "</td></tr>"
response.write "</table>"
%></center>
三,ASP程序编写要领 (续 )
? 混合编写的灵活应用
程序 p3a.asp
<script language=vbs>
<% x=1
response.write "y=" & x+100
%>
z=y+100
document.write z
</script>
说明了如何实现客户端程序与服务器端数据的衔接;
更复杂的情况如何处理?
四、重要函数的应用举例
1,Replace 函数
文本框中的换行符与网页中的换行之不同, 示例, p4.asp
处理函数,见 p5.asp
Function toHtml(str)
vstr=str
if isnull(vstr) then ?判参数值是否为 null值
toHtml="&nbsp;"
else
vstr=server.HTMLEncode(vstr)
vstr=replace(vstr,vbcrlf,"<br>")
vstr=replace(vstr," ","&nbsp;")
toHtml=vstr
end if
End Function
思考, (1)为什么要加上 isnull(str)? 在何场合要考虑?
(2)如何将 0-9变成中文的一,二,三 …,九
四、重要函数的应用举例 (续 )
2,Split函数
问:该函数的功能如何?
将学生选择题答案分解(在线练习系统
演示 ).
如答案为:
B/A/B/B/A/A/C/C/A/B/AB/ACD/X/X/X/X/X
问这次练习共有几题?
四、重要函数的应用举例 (续 )
3,Instr
二进制比较与文本比较的区别?
instr(1,”Active Server Pages”,”page”,0)
instr(1,”Active Server Pages”,”page”,1)
前者返回值为?
后者返回值为?
在线实训环境演示.
如果将上述语句直接复制到窗口中出错,
原因何在?
四、重要函数的应用举例 (续 )
4,Chr与 Asc函数
二个函数的区别?
(1)回车换行符的 asc码是多少?如何用
msgbox显示 2行信息,
(2)一个汉字占几个字节?len(“中国人民” )=?
(3)A sc(“中” )=?
(4)打印出第16区所有汉字,p6.asp
四、重要函数的应用举例 (续 )
<title>打印出第 16区中所有汉字 </title>
<script language="vbscript">
for i=1 to 94
if i mod 16 =0 then document.write "<br>"
document.write chr((16+160)*256+160+i) & ",
next
</script>
<!-- 上面的程序为什么输出达不到预期效果
该程序执行效率如何?应如何改进
-->
四、重要函数的应用举例 (续 )
5,日期处理函数
date 求当前日期 time 当前时间
Now 当前日期与时间
DateAdd(间隔参数,n,date) 日期相加
Dateadd(“m”,2,”31-mar-2003”) 结果 03-05-31
Datediff(间隔参数,date1,date2)
Datediff(“d”,date,cdate(”2003-10-1”))
间隔参数, 年 yyyy,月 (m),日 (d),周 (w),时 (h),分
(n),秒 (s)
四、重要函数的应用举例 (续 )
6,数据转换函数
cint 转换为整数
Cstr 转换为字符串
Cdate 转换为日期
Int 取整函数
Isnull 是否为 null值
Isempty 是否为空字符串
Isarray 变量是否为数组
Vartype 测表达式的数据类型
五、内置对象 (Response)
(1)输出表单元素
示例:如何输出一个选择列表框
如考生有待考,在考,交卷,特许,禁止五种状态,用程序
方式在页面上产生一个选择列表框,(见 p7.asp)
五、内置对象 (Response续 )
<SELECT id="select3" name="status" size=1>
<% ss="待考在考交卷特许禁止 "
for i=0 to 4 %>
<% if vstatus=i then %>
<OPTION selected value=<% =vstatus %>>
<% =mid(ss,i*2+1,2) %>
</OPTION>
<% else %>
<OPTION value=<% =i %>>
<% =mid(ss,i*2+1,2) %>
</OPTION>
<% end if %>
<% next %>
</SELECT>
五、内置对象 (Response)
(2)重定向
服务器端
Response.redirect,url”
客户端 p7.htm
<script language="vbscript">
document.location="p7.asp" 也可写在 "./p7.asp" 或 ".\p7.asp",
如果是父文件夹,用 "../p7.asp"
'document.location="http://www.163.com"
'window.location="http://www.163.com"
'document.location.href="http://www.163.com"
</script>
五、内置对象 (Request)
? Request对象共有五种获取方法,分别是:
QueryString,Form,Cookies、
ServerVariables,ClientCertificate
? 语法:
Request.获取方法(参数)
1,表单的二种提交方式 post与 get
2,对应的集合为 form,querystring
五、内置对象 (Request续 )
表单提交用 Post方式,p8.asp
<%
for each f in request.form
response.write f & "=" & request.form(f) & "<br>"
next
%>
五、内置对象 (Request续 )
表单提交使用 Get方式,p8a.asp
<%
response.write request.querystring & "<br>"
for each f in request.querystring
response.write f & "=" &
request.querystring(f) & "<br>"
next
%>
五、内置对象 (Request续 )
获取系统变量,p9.asp
<%
for each f in request.servervariables
response.write f & "=" & request.servervariables(f) & "<br>"
next
%>
以下几个变量在开发时经常会用到,
Request.servervariables(“remote_addr”) 客户端 ip,如阻止某个 IP访问
Request.servervariables(“PATH_INFO”) 网页文件所在相对路径
Request.servervariables(“PATH_TRANSLATED”) 网页所在绝对路径
Request.servervariables(“HTTP_USER_AGENT”) 浏览器信息
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
内置对象 (Session)
? Session对象是什么?
– 利用 Session可以保存变量或字符串等信息
? 为什么要用 Session对象?
用户认证
数据传递
? Session对象的有效范围?
用户当前网页及其新开网页
window.open(“url”,”name”,”para”)
? 属性、方法
– 属性,
– 1,SessionID 存储用户的 Session ID
– 2,Timeout 设置 Session的有效期时长
– 3,Contents 用户定义的 session集合
– 方法:
Abandon 清除 Session,session.Contents.RemoveAll()移走所有的 session
内置对象 (Session)
得到当前页面内的所有 session变量,p10.asp
<%
session("username")="wujiaoyu"
session("password")="12345"
for each s in session.contents
response.write s & "="
response.write session(s) & "<br>"
next
%>
内置对象 (Session)
Session还可用于保存数组,p10a.asp,作用是以后可以传递整条记录信息
dim arr(10)
for i=0 to 10,arr(i)=I,next
session("username")="wujiaoyu,,session("password")="12345"
session("arr")=arr
for each s in session.contents
v_session=session(s)
if not isarray(v_session) then
response.write s & "=,& v_session & "<br>"
else
for i=0 to ubound(v_session)
response.write s & "(" & i & ")=" & v_session(i) & "<br>"
next
end if
next
%>
试一试,session是否可以存贮对象变量
内置对象 (Application,server)
? Application对象是什么?
各用户共享变量
清除 Application对象, application.Contents.RemoveAll()或
application.Contents.Remove (“username”)
? Server对象
Server.mappath作用,文件操作。
Server.htmlencode
Server.Execute(url) 类似于函数调用,在执行完调用网页后返回调用者,
Server.Transfer(url)转到另一个网页,与 response.redirect不同,前者会
保留所有的内置对象的值,台 request对象的集合,session变量的值
等,而 response.redirect则不会保留内置对象,
总结
? 今天为大家结合实例分析ASP编程重点和难点
问题,大家在今后学习中应记住:
格式无定式
编程要有心
概念须理清
工具用最新
? 课后练习:
通过在线练习系统,完成综合测试部分练习