第一节 ASP语法简介 一、ASP文件的组成 ASP必须保存为以 .asp 为扩展名的文件。一个“ .asp ”文件就是一个文本文件,其中可以包括: HTML语句:<…>包括的部分。 服务器端的程序代码:位于<%...%>内。 客户端的程序代码:位于<Script>…</script>内的代码 第1节
示例1:2-1.asp <html> <head> <title>一个简单的ASP程序</title> </head> <body> <h2 align="center">欢迎您光临我的主页</h2> <p align="center"> <% sj="您来访的时间是:" & date() & time() Response.Write sj '输出结果 %> </body> </html> 第2节
示例2: <% Response.Write“<p>今天日期:”&Date& “</p>” Response.Write“<p>现在时间:”&Time& “</p>” %> 从示例中可以看出,ASP文件就是在标准的HTML页面中嵌入了VBScript代码后形成的,而<%与%>之间的内容就是VBScript代码,date(),time()都是VBScript中的函数. 第3节
所有的代码必须放在<%与%>符号之间(仅有Global.asa文件例外) 二、ASP文件的约定 所有的代码必须放在<%与%>符号之间(仅有Global.asa文件例外) 在ASP里面,VBScript是默认的脚本语言,如果要在ASP网页中使用其他的脚本语言,可以用以下的方法切换: <%@Language=VBScript%> <%@Language=JavaScript%> 第4节
三、ASP文件的注意事项 (1)在ASP程序中,字母不分大小写 (2)在ASP中,凡是用到标点符号的,都是在英文状态下输入的标点符号,否则将出错.只有一种情况除外,就是在字符串中使用标点符号.如下面的冒号: <% a=“大家好:现在开始上课”%> (3)一条ASP语句就是一行,不能将多条ASP语句写在一行里。 第4节
三、ASP文件的注意事项 错误的情况: <% a=2 b=3 %> <% a= 2 %> 如果一条ASP语句过长,一行写不下,可以分成多行,但是必须在每行末(最后一行除外)加一个下划线 第4节
三、ASP文件的注意事项 (4)养成良好的书写习惯,如恰当的缩进 第4节
注释语句不执行,也不会显示在页面上,只是在阅读源程序时才能看到。添加注释是为了方便以后阅读程序。 四、程序注释 注释语句不执行,也不会显示在页面上,只是在阅读源程序时才能看到。添加注释是为了方便以后阅读程序。 适度的注释 单引号('):作为单行的注释,在单引 号(')之后的文字,皆视为注释。 Rem关键字:作为单行的注释,在 Rem关键字之后的文字,皆视为注释。 经验:在调试程序的时候,可以暂时注释掉一些语句,以便发现问题所在的语句 第4节
在ASP中的一般变量的指定语句是“=”,而对象值的指定语句必须使用Set语句。 五、指定语句 在ASP中的一般变量的指定语句是“=”,而对象值的指定语句必须使用Set语句。 如: Set fs = Server.CreateObject("Scripting.FileSystemObject") 注意: 用Server.CreateObject函数生成对象时,VBScript保留保存对象数据的内存区。 Server.CreateObject函数返回内存中该位置的指针。 第6节
生成对象变量后,可以用“.”记号调用其属性和方法: objDictionary.Add someKey 用完对象变量后,最好将其设置为数值Nothing: Set fs = Nothing 第7节
算术运算符:(+、-、*、/、\整数除法、 Mod余数、^指数) 六、运算符 算术运算符:(+、-、*、/、\整数除法、 Mod余数、^指数) 关系运算符:(=、<>、<、>、<=、>=) 逻辑运算符:(Not、And、Or、Xor) 字符运算符: (&) 结果=表达式1 & 表达式2 强迫两个表达式作字符串的连接 第8节
七、变量声明 变量声明 1、有效的变量名称为255个字符 2、变量名称必须以字母开头。 3、在同一个有效范围内的变量名称必 须是唯一的。 使用Dim语句来声明变量及配置存储空间 Dim 变量名称 声明多个变量时,使用逗号分隔变量 第9节
使用Const语句来声明常数、配置空间并指定内容值 Const 常数名称 =常数值 示例: 常数声明 使用Const语句来声明常数、配置空间并指定内容值 Const 常数名称 =常数值 示例: <% Dim A Const B=124 A=“这是测试字符串” Response.Write “A=”&A& “<br>” Response.Write “B=”&B & “<br>” %> 第10节
ASP的主要数据类型:Variant(通用变量) 次要数据类型(次类型):包括布尔值、字节、整数、长整数、单浮点、双浮点、货币及日期时间等。 八、数据类型 ASP的主要数据类型:Variant(通用变量) 次要数据类型(次类型):包括布尔值、字节、整数、长整数、单浮点、双浮点、货币及日期时间等。 两者为包含关系 Variant这种数据类型会根据所指定的数据内容而随时改变其“次类型“ 第11节
第二节 ASP内建对象 ASP提供了五个内建对象来提供更高一级的Web功能,它们是: · Request:从客户端获取信息; · Response:将信息送给客户端; · Server:创建COM对象和Scripting组件等; · Session:存储单个用户的信息; Application:存放同一个应用程序中的所有用户之间的信息。
第二节 ASP内建对象 一、利用Request对象从客户端获得信息 1 Request对象简介 Request对象用来获得客户端信息,共有5种获取方法,分别是QueryString,Form,Cookies,ServerVariables,ClientCertificate 例如:<% Request.Form(“user_name”) Request.QueryString(“user_name”) %>
第二节 ASP内建对象 一、利用Request对象从客户端获得信息 说明:传入的参数是要得到该信息的变量名称。 2 使用Form获取方法
第二节 ASP内建对象 <html> <head> <title> Form获取方法示例1 </title> </head> <body> <form name="test" method="post" action="4-2.asp"> a<input type="text" name="a"> + b<input type="text" name="b"> <p> <input type="submit" value="确定"> </form> </body> </html>
第二节 ASP内建对象 4-2.asp 简单的计算器 <html> <head> <title> Form获取方法示例1 </title> </head> <body> <% Dim a,b,c a=Request.Form("a") b=Request.Form("b") c=CInt(a)+CInt(b) ‘因为传送的是字符串,所以须转换类型 Response.Write "a+b的和=" & CStr(c) %> </body> </html>
第二节 ASP内建对象 注意: <form>标记中的action属性表示将信息传递给哪一个asp文件处理; Method属性表示上传表单的方法,一般用post 在4-2.asp中,声明了几个变量,变量名字和表单中的元素名字相同,a=Request.Form(“a”)主要是为了程序易读。前面的a是声明的变量,后面的a表示表单中文本框的名字。两者可以不一致。 4-1.asp并没有使用ASP语句,所以可以改为4-1.htm
第二节 ASP内建对象 在上面的例子中,客户端在4-1.asp中输入内容后,单击确定按钮,就可以将信息传送给4-2.asp,在4-2.asp中对传过来的信息进行各种处理。事实上,也可以将上面的两个文件合成一个文件,也就是说,可以将表单信息传送给自身。实现方法只要令action=“”或自身文件名。
第二节 ASP内建对象 <html> <head> <title> Form获取方法示例2 </title> </head> <body> <form name="test" method="post" action=""> a<input type="text" name="a"> + b<input type="text" name="b"> <p> <input type="submit" value="确定"> </form>
第二节 ASP内建对象 <% If Request.Form("a")<>"" and Request.Form("b")<>"" Then '这一句很重要 Dim a,b,c a=Request.Form("a") b=Request.Form("b") c=CInt(a)+CInt(b) Response.Write "a+b的和=" & CStr(c) Else Response.Write "请输入两个整数后按确定按钮" End If %> </body> </html> 思考:如果a,b中有一个文本框中输入了数据就需要进行计算,没有输入的用数字0代替.请完成代码. 修改后的程序: If request.form("a")<>"" or request.form(“b") then a=request.form(“a") b=request.form(“b”) if request.form(“a")=“” then a=0 endif if request.form(“a")=“” then b=0 endif c=Cint(a)+Cint(b) response.write “a+b的和是”&CStr(c) Else response.write “请输入数据!” End if
第二节 ASP内建对象 程序说明: (1) If Request.Form(“a”)<>“” and Request.Form(“b”)<>“” Then 这个判断语句表示,如果输入了两个整数,就显示相加,否则显示提示信息.
第二节 ASP内建对象 2 使用QueryString获取方法 在一个网页向另一个网页过渡时,如果通过URL携带传递信息,这类信息要用QueryString获取方法取回返回变量及其值 如:4-6.asp <html> <head> <title>QueryString用法示例</title> </head> <body> 请单击下面的超链接<p> <a href="4-7.asp?name=白芸&age=22">显示</a> </body> </html>
第二节 ASP内建对象 4-7.asp <html> <head> <title> QueryString用法示例</title> </head> <body> <% Dim name,age name=Request.QueryString("name") '返回姓名 age=Request.QueryString("age") '返回年龄 Response.Write "您的姓名是:" & name & ",您的年龄是:" & age %> </body> </html>
第二节 ASP内建对象 3 ServerVariables获取方法 当我们希望知道服务器端或客户端的一些信息时,如客户端的IP地址,可以利用Request对象的ServerVariables方法可以方便地取得服务器端的环境变量信息. ServerVariables的语法格式: Request. ServerVariables(“环境变量名”)
ServerVariables获取方法 例子:4-8.asp …… <body> <% Dim IP IP=Request.ServerVariables("REMOTE_ADDR") Response.Write "来访者IP地址是:" & IP &"<br>" Dim local_IP local_IP=Request.ServerVariables("Local_ADDR") Response.Write "服务器的IP地址是:" & local_IP %> </body>
Request.ServerVariables("REMOTE_ADDR"):取得客户端的IP地址。(注:如果客户端是使用代理服务器来访问,那取到的就是代理服务器的IP地址,而不是真正的客户端IP地址) Request.ServerVariables("HTTP_X_FORWARDED_FOR"):透过代理服务器取得客户端的IP地址。 如果客户端没有通过代理服务器来访问,那么用Request.ServerVariables("HTTP_X_FORWARDED_FOR")取到的值将是空的,因此,在程序中如果要使用此方法,则可以这样处理: ...... userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") if userip="" then userip=Request.ServerVariables("REMOTE_ADDR")
Response对象 Response对象可以向客户端输出信息,他的方法有: 方 法 说 明 write 送出信息到客户端 redirect 方 法 说 明 write 送出信息到客户端 redirect 引导用户端的浏览器至新的Web页面 end 终止处理ASP程序,并返回当时的状况 flush 立刻送出缓冲区的Html数据 clear 消除缓冲区中的所有Html页面 BinaryWrite 输出二进制信息
Write方法 write方法是Response对象最普遍、最常用的方法,它直接把信息从服务端送到客户端,从而实现动态内容的显示。 语法格式:Response.write 字符串或变量或常量 Response.write ()建议去掉().
Write方法 …… <% user_name=“G_Jocky” Response.Write “你的密码是: “ ‘输出字符串 Response.Write user_name ‘user_name 是一个变量 Response.Write “你的姓名是:" & user_name %>
Write方法 注意: (1)Response.write 必须在<% %>内,不能在客户端运行。 请看4-9. asp
Write方法 Write方法还可以用来输出HTML元素 注意:如果在双引号内用到双引号,必须改为单引号 <body bgcolor="#FFFFFF" text="#000000"> <div align="center">比较 Write 方法输出 Html 元素 </div> </body> <body bgcolor="#FFFFFF" text="#000000"> <% response.write "<div align='center'>比较 Write 方法输出 Html 元素 </div>" %> </body> 注意:如果在双引号内用到双引号,必须改为单引号
Write方法 注意: (1)HTML代码中的双引号要改成单引号。 (2)在开发ASP程序时,如果遇到不方便进行ASP语句和HTML元素之间的切换时,可以用 Write方法来输出HTML元素。
Redirect方法 在普通网页中,可以利用超链接引导客户至另一个页面,但是必须要客户单击超链接才行。可是有时希望自动引导客户至另一个页面,比如:进行网上考试时,当考试时间到时,应自动引导客户端至结束界面。在ASP中,可使用Redirect方法引导客户至另一个页面。 语法格式为:Response.redirect 网址变量或网址字符串
Redirect方法 <% If Request.Form("adrress")="csdn" then ‘将用户引至程序大本营网站 Response.Redirect "http://www.csdn.net" ElseIf Request.Form("adrress")="book" then ‘将用户引至网络书城 Response.Redirect "http://www.cnforyou.com" End If %>
Redirect方法 注意: (1)Redirct语句中网址的写法,可以是相对地址,也可以是绝对地址。 (2)如果希望在ASP文件的任意地方使用Redirect语句,那就必须在ASP文件的开头加上<%Response.Buffer=True%>这一句话。否则,Redirct语句必须放到ASP文件的开头,如果不放到ASP文件的开头,网页执行会出错:“HTTP 头已经写入到客户浏览器。任何 HTTP 头的修改必须在写入页内容之前。”
Buffer属性 Buffer属性用来设置服务器端是否将页面输出到缓冲区,它的值为True或False。当Buffer为True时,服务器端先输出至缓冲区,在输出至缓冲区时,服务器端不响应客户端,除非所有的服务器瑞文件被处理完毕。当Buffer为False时,服务器端直接将页面输出至客户端浏览器。 如果在ASP文件中任意地方用到Redirect方法重定向页面,则必须在文件开头加<% Response.Buffer=True %>这一句话,否则就会报错。这是因为:在默认状况下,服务器端直接将页面输出至客户端,当输出HTML元素后,又想将网页引导到另一个页面,这是不允许的,而令Buffer等于True后,将把页面输出到缓冲区,在缓冲区不存在这个问题,可以随时将网页引导至其他页面。
End方法 End方法用来终止ASP程序的执行。当ASP程序中遇到response.end语句后,则终止程序执行(包括asp程序和html代码)。 该方法经常用在调试程序的时候。 4-11.asp <body> <% Response.Write "这是第一句" Response.End Response.Write "这是第二句" %> <p>这是第三句 </body>
Cookies的设置和读取 Cookies是服务器嵌入用户浏览器中来标识用户的一种方法。依据cookies来统计用户信息,为用户实现个性化服务。 Cookies有两种形式:一种是会话cookies,另一种是永久cookies。前者只在用户和服务器会话期间存在于用户的硬盘上,后者则在定义的有效期内永久地存在于用户的硬盘上。 Cookies变量可以实现网站的各页面之间共享这些信息。ASP的Cookies是由response对象的Cookies方法来设置的,由Request对象的Cookies方法获取。
Cookies的设置(写入) 语法格式: response. Cookies(“CookiesName”)=变量或字符串 CookiesName :Cookies变量名称 关键字:为可选参数,若指定了关键字,该Cookies则表示一个集合,它可包含几个关键字,可以分别赋值 属性:Cookies的属性 ,Cookies变量本身有一些属性,其中有些属性是仅可写入的,有些是只读的。可设置的属性有:expires,path,Domain,Secure
Cookies的设置 举例: <% response. Cookies(“user”).expires=#2006-5-1#%> response.Cookies(“user_name”)=request.form(“user_name”) %> <% response. Cookies(“user”)(“name”)=request.form(“user_name”) response. Cookies(“user”)(“sex”)=request.form(“user_sex”) response. Cookies(“user”)(“hobby”)=request.form(“user_hobby”) …… %> <% response. Cookies(“user”).expires=#2006-5-1#%>
Cookies的设置 注意: (1)设置Cookies时,如果该Cookies已经存在,则覆盖原来的Cookies;如果不存在则创建一个。 (2)想在ASP文件任何地方使用用response. Cookies方法设置Cookies变量,必须保证response.Buffer=true. (3)防止不同站点设置的Cookies名一样而发生覆盖,则可在程序中设置cookies变量的作用域(如domain、path属性)
读取Cookies 语法格式: Request. Cookies(“CookiesName”)[(关键字)] <% response. Cookies(“user_name”)=request.form(“user_name”) response.write request. Cookies(“user_name”) %>
读取Cookies 语法格式: Request.Cookies(“CookiesName”)[(关键字)] 读取包含关键字的Cookies <% response. Cookies(“user”)(“name”)=request.form(“user_name”) response. Cookies(“user”)(“sex”)=request.form(“user_sex”) response. Cookies(“user”)(“hobby”)=request.form(“user_hobby”) response.write request. Cookies(“user”) (“name”) response.write request. Cookies(“user”) (“sex”) response.write request. Cookies(“user”) (“hobby”) %>
读取Cookies 语法格式: Request.Cookies(“CookiesName”)[(关键字) ] .属性 属性:Cookies变量本身有一个只读属性:haskeys http://hi.baidu.com/zbwbao/blog/item/746701556a84ffc6b745ae92.html 读取Cookies变量的HasKeys属性: <% ‘读取是否有关键字 response.write request. Cookies(“user”) .haskeys %>
使用Cookies制作一个简单的网页计数器,表单提交页面的代码如下:(文件名:4-3g.htm) <html> <head><title>用户个人资料</title></head> <body> <center> <form name="Form1" method="get" action="4-3g.asp"> <p>姓名:<input name="txtuserName" type="text"> <p>性别:<input name="optUserSex" type="radio" value="男">男 <input name="optUserSex" type="radio" value="女">女 <input Type="submit" name="btnSubmit" value="提交"> <input type="reset" name="reset" value="重写"> </center> </form> </body> </head>
统计本页面被访问多少次的处理程序页面(文件名:4-3g.asp)的代码如下: <font size='7' color='red' face='华文彩云'> <% if optUserSex="男" then Response.Write txtuserName & "先生,欢迎您访问本站!" elseif optUserSex="女" then Response.Write txtuserName & "小姐,欢迎您访问本站!" End if %> </font> <hr size="2" width="70%" color="#cc9999"> <% Response.Write"<P>本页面当前已被访问<b>" & n & "</b>次了。</p>" Response.Cookies("user")("VisitedTimes")=n Response.Cookies("User").Expires=date()+7 '设置名为User的Cookies的有效期为7天。 %> <a href="4-3g.htm">返回上一页</a>***||***<a href="4-3-4.asp">返回教材</a> </center> </body> </html> <% @ language=“VBScript” %> <% Response.Buffer=true %> <html> <head> <title>读写Cookies示例</title> </head> <body> <center> <% n=Request.Cookies(“User”)(“VisitedTimes”) txtUserName=Request.Querystring(“txtuserName”) optUserSex=Request.Querystring(“optUserSex”) if n=“” then n=1 else n=n+1 end if %>接右边
<%@ LANGUAGE="VBSCRIPT" %> <% dim userName,firstName,lastName,days '获取从Form提交上来的数据 userName = Request.Form("userName") firstName = Request.Form("firstName") lastName = Request.Form("lastName") days = Request.Form("days")'保存天数 if isNumeric(days) then days = cint(days) else days=0 end if '写入Cookies Response.Cookies("UserName") = userName Response.Cookies("UserName")("FirstName")=firstName Response.Cookies("UserName")("LastName")=lastName Response.Cookies("UserName").Expires = Now()+days '读取Cookies userName = request.cookies("userName") '... if userName="" then response.write "请登录" response.end end if % >
Cookies的特点 1. Cookies保存在用户的机子上,不是在服务器上,进行了简单的加密。 不同的用户在同一台电脑上网时,Cookies不会辨别用户的身份,从而暴露其他客户的隐私。所以设置cookies一定要谨慎。cookies一般用于保存非重要的信息,供网站中文件共享。
注意 通常Cookies文件存放在C:WindowsCookies目录中(对于Win98/Me系统),对于Win2000/XP系统,Cookies文件通常存放在C:Documents and Settings中该用户目录下的Cookies子目录中。 如果客户关闭了Cookies选项,Session就不起作用了。在IE6.0中,点击“工具”菜单中的“Inetnet选项”菜单项,打开“Intenet选项“对话框,选择”隐私“选项卡,单击其中的”高级“按钮,在打开的”高级隐私策略设置“对话框中选中”覆盖自动Cookies处理“复选框,然后选择”拒绝“选项,这时就关闭了Cookies.
参考网址 ASP入门基础教程 http://tech.ddvip.com/2006-10/11618046459861.html
课后练习 1 请开发一个页面,显示来访者的IP地址,并判断:如果IP地址以162.105开头,则显示欢迎信息;否则,显示为非法用户,并终止程序。 2 请开发一个页面,当客户第一次访问时,需在线注册姓名、性别等信息,然后把信息保存到Cookies中。下一次如果该用户再访问,则显示“某某,您好,您是第几次光临本站”的欢迎信息。