为了实现网站的经常使用功能,ASP提供了内置对象。内置对象的特色是:不须要事先声明或者建立一个实例,能够直接使用。常见的内置对象有javascript
在客户端/服务器结构中,当客户端Web页面向网站服务器端传递数据时,ASP经过Request对象可以获取客户端提交的所有信息。包括客户端的HTTP变量、在网站服务器端存放的客户端浏览器的Cookie数据、赋予URL以后的字符串信息、页面表单传送的数据以及客户端认证等html
Request对象的语法以下java
Request[.collection | property | method](variable)程序员
collection:Request对象的数据集合sql
Property:Request对象的属性数据库
method:Request对象的方法windows
variable:由字符串定义的变量参数,指定要从集合中检索的项目或者做为方法、属性的输出数组
例如:经过Request对象的QueryString数据集合取得传值参数myid的值并赋值给变量浏览器
<%缓存
Dim id
id=Request.QueryString("myid")
%>
这里值得注意的是,在使用Request对象时,collection、property和method最多只能选择一个;也能够三个都不选,这是Request对象根据如下顺序搜索集合:QueryString、Form、Cookie、Servervariable、ClientCertificate,当发现第一个匹配的变量时,接肯定是要访问的成员
QueryString对象包括5个集合,1个属性和一个方法
成员 | 描述 |
Form数据集合 | 读取HTML表单域控件的值,即POST方式提交的数据 |
QueryString数据集合 | 读取赋予URL地址后的字符串的值 |
Cookies数据集合 | 读取存放在客户端浏览器Cookie的内容 |
ServerVariables数据集合 | 读取客户端请求发出的HTTp报头值及WEB服务器的环境变量值 |
ClientCertificate数据集合 | 读取客户端的验证字段 |
TotalBytes属性 | 返回客户端发出请求的字节数量 |
BinaryRead方法 | 以二进制方式读取客户端请求,并返回一个变量数组 |
表单是表准HTML文件的一部分,用户经过点击表单中的提交按钮提交输入的数据
在含有ASP动态代码的WEB页面中,可使用Request对象的Form集合收集客户端的以表单形式发送到服务器的信息
语法:
Request。Form(element)[index | .count]
element:指定集合要检索的表单元素的名称
index:索引值,为可选参数,能够取得表单中名称相同的元素值。索引值是1至Request.Form(element).Count之间的任意整数
Count:集合中相同名称元素的个数
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>获取表单数据</title> 7 </head> 8 <body> 9 <form id="form1" name="form1" method="post" action="code.asp"> 10 <p>用户名:</p> 11 <input name="txt_username" type="text" id="txt_username" /> 12 <p>密 码:</p> 13 <input name="txt_pwd" type="password" id="txt_pwd" /> 14 <p style="width:200px" align="center"> 15 <input type="submit" name="submit" value="提交" /> 16 17 <input type="reset" name="submit2" value="重置" /> 18 </form> 19 </body> 20 </html>
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>无标题文档</title> 7 </head> 8 <p>用户名:<%=Request.Form("txt_username")%> 9 <p>密码为:<%=Request.Form("txt_pwd")%> 10 <body> 11 </body> 12 </html>
表单中的多个对象具备相同名称时,能够利用Count属性得到具备相同名称对象的总数,而后经过索引获取不一样内容值,也能够应用for each ...next语句来获取相同名称对象的不一样内容值。
代码:获取复选框的值并显示其内容
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>获取表单数据</title> </head> <body> <form id="form1" name="form1" method="post" action="code.asp"> <p>爱好:</p> <input name="favour" type="checkbox" id="favour" value="计算机" />计算机 <input name="favour" type="checkbox" id="favour" value="英语" />英语 <input name="favour" type="checkbox" id="favour" value="篮球" />篮球 <input name="favour" type="checkbox" id="favour" value="旅游" />旅游 <p style="width:200px" align="center"> <input type="submit" name="submit" value="提交" /> <input type="reset" name="submit2" value="重置" /> </form> </body> </html>
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>无标题文档</title> 7 </head> 8 <% 9 dim nums,i 10 nums=request.Form("favour").count 11 for i=1 to nums 12 response.Write request.Form("favour")(i) & "<br>" 13 next 14 %> 15 <body> 16 </body> 17 </html>
经过Request对象的QueryString数据集合能够查询字符串数据
语法:
Request.QueryString(variable)[(index) | .count]
variable:指定要检索的HTTP查询字符串中的变量名
index:索引值,为可选参数,能够取得HTTP查询字符串中相同变量名的变量值。索引值能够是1至Request.QueryString(variable).Count之间的任意整数
Count:查询字符串中相同名称变量的个数
有两种状况要在服务器端指定利用QueryString数据集合取得客户端传送的数据,一是表单中经过Get方式传递数据,二是利用超连接标记<a>传递参数
①经过get方式传递的表单数据
与Form数据集合类似,QueryString数据集合能够取得表单中经过get方式传递的数据。
如例:获取get方式传递的表单数据
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>获取表单数据</title> 7 </head> 8 <body> 9 <form id="form1" name="form1" method="get" action="code.asp"> 10 <p>职 务:</p> 11 <input name="post" type="radio" id="favour" value="学生" />学生 12 <input name="post" type="radio" id="favour" value="老师" />老师 13 <p>所在专业:</p> 14 <select name="profession" size="3" id="profession"> 15 <option value="计算机科学与技术">计算机科学与技术</option> 16 <option value="英语">英语</option> 17 <option value="数学">数学</option> 18 <p style="width:200px" align="center"></p> 19 <input type="submit" name="submit" value="提交" /> 20 21 <input type="reset" name="submit2" value="重置" /> 22 </form> 23 </body> 24 </html>
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> </head> 你的职位:<%=request.QueryString("post")%> <br> 你的专业:<%=request.QueryString("profession")%> <body> </body> </html>
②使用超连接传递的参数
在程序中,能够直接利用HTML的<a>标签传递参数,传递的参数写在?后面,若是有多个参数则使用&做为分隔符,使用Request对象的QueryString数据集合能够取得所传递的参数值
经过Request对象的ServerVariables数据集合能够取得服务器端的环境变量信息。这些信息包括发出请求的浏览器信息、构成请求的HTTP方法、用户登陆windows NT的帐号、客户端的IP地址等。服务器端环境变量对ASP程序有很大帮助,使程序可以根据不一样状况进行判断,提升了程序的健壮性。 服务器端环境变量是只读变量,只能查阅,不能设置。
语法:
Request.ServerVariables(server_environment_variable)
server_environment_variable:服务器端环境变量
代码:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>服务器环境变量</title> </head> <body> <% Response.Write "服务器名称、域名和IP地址(SERVER_NAME):" & Request.ServerVariables("SERVER_NAME") & "<br>" Response.Write "客户端IP地址(REMOTE_ADDR):" & Request.ServerVariables("REMOTE_ADDR") & "<br>" Response.Write "客户端提供的访问路径(PATH_INFO):" & Request.ServerVariables("PATH_INFO") & "<br>" %> </body> </html>
Response对象时ASP内置对象中直接对客户端发送数据的对象。Request请求对象与Response响应对象构成了客户端/服务器响应的模式。经过Response能够将客户端重定向到一个指定的页面中,能够设置客户端的Cookie值等。
语法:
Response对象的语法以下:
Response.collection | property | method
collection:Response对象的数据集合
property:Response对象的属性
method:Response对象的方法
例如:使用Response对象的Cookie数据集合设置客户端的Cookie关键字并赋值
<%
Response.Cookies("info")="ASP"
%>
Response与一个HTTP响应对应,经过设置其属性和方法能够控制如何将服务器端的数据发送到客户端浏览器。Response主要成员以下:
成员 | 描述 |
Cookies数据集合 | 设置客户端浏览器的Cookie值 |
Buffer属性 | 代表输出页是否被缓冲 |
CacheControl属性 | 决定代理服务器是否能缓存ASP生成的输出页 |
Status属性 | 服务器返回的状态行的值 |
ContentType属性 | 指定响应的HTTP内容类型 |
Charset属性 | 将字符集的名称添加到内容类型标题中 |
Expires属性 | 在浏览器中缓存页面超时前,能够指定缓存时间 |
ExpiresAbsolute属性 | 指定浏览器上缓存页面超时的日期和时间 |
IsClientConnected属性 | 代表客户端是否与服务器断开 |
PICS属性 | 将PICS标记的值添加到响应的标题的PICS标记字段中 |
Write方法 | 直接向客户端浏览器输出数据 |
End方法 | 中止处理.asp文件并返回当前结果 |
Redirect方法 | 重定向当前页面,链接另外一个URL |
Clear方法 | 清除服务器中缓存的HTML信息 |
Flush方法 | 当即输出缓冲区的内容 |
BinaryWrite方法 | 按照字节格式向客户端浏览器输出数据,不进行任何字符集的转换 |
AddHeader方法 | 设置HTML标题 |
AppendToLog方法 | 在WEB服务器的日志文件中记录日志 |
使用Response对象的Write方法能够将指定的字符串信息输出到客户端。Write方法是Response对象经常使用的方法
语法:
Response.Write variant
variant:输出到浏览器的变量单数句或者字符串
注意:若是在输出字符串中包含ASP程序定界符,“%>”,WEB服务器解释时就会觉得ASP语句结束,形成服务器错误。所以,在ASP程序中须要向浏览器输出"%>"时,能够用"%\>"代替,即将其做为转义符输出,这样ASP处理引擎就会自动转化"%>"为字符串
WEB服务器响应客户端的请求时,是以信息流的形式将响应数据发送给客户端的,发送过程是先返回响应头,再返回正式的页面。在处理ASP页面时,信息流的发送则是生成一段页面就当即发送一段信息流I返回给浏览器。
ASP提供了另外一种发送数据的方式,即利用缓存输出。缓存输出是指WEB服务器生成ASP页面时,等ASP页面所有处理完以后,再返回用户请求
①使用缓冲输出
a.Buffer属性:在默认状况下缓冲是关闭的,经过设置Response对象的buffer属性为true,能够打开缓冲。缓冲启用后凡是输出到客户端的信息都暂时存入缓冲区,直到整个ASP页面执行结束或调用了Response对象的flush或end方法后,才将响应发送给客户端的浏览器。
语法:
Response.Buffer=True/False
Response对象的Buffer属性必须在任何信息发向客户端浏览器以前设置,不然是无效的,而且会致使一个错误
例如:在页面中 启用缓冲
<%
Response.Buffer="True"
%>
b.Flush方法:用于将缓冲区内容当即发送给客户端浏览器。
语法:
Response.Flush
c.Clear方法:用于清除缓冲区
语法:
Response.Clear
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>使用缓冲输出</title> </head> <body> <% dim i for i=1 to 20 response.Write i & "<br>" if i=10 then response.Flush() next response.Clear() %> </body> </html>
②设置缓冲的有效期限
保存在缓存中的内容是有必定期限的,Response提供的一些属性控制缓存的期限
a.CacheControl:应用程序能够经过代理服务器将页面发送给客户。代理服务器表明客户端浏览器向WEB服务器请求页面。代理服务器高速缓存HTML页,这样对同一页的重复请求会迅速高效的返回到浏览器。
在默认状况下,ASP指示代理服务器不要高速缓存ASP页自己。经过Response对象的CacheControl属性设置Cacche-Control头字段,能够容许代理服务器高速缓存特定页面。
语法:
Request.CacheControl [=Cache_Control_Header]
Cache_Control_Header:表示缓冲存储器控制标题,取值为private或public
b.Expires属性:用于指定在客户端浏览器上缓冲存储的页面距过时还有多少时间。
语法:
Response.Expires [=number]
number:指定缓存的页面距离过时还有多少时间,单位为分钟
c.ExpiresAbsolute:指定缓存于客户端浏览器中的页面到期的日期时间
语法:
Response.ExpiresAbsolute [date][time]
date:指定页面的到期日期
time:指定页的到期时间
网页重定向是指从一个网页跳转到其余页面。应用Response对象的Redirect方法能够将客户端浏览器重定向到另外一个页面。若是须要从当前网页转移到一个新的URL,而不用通过用户去单击超连接或者搜索URL,此时可使用该方法使用户浏览器重定向直接重定向
语法:
Response.Redirect URL
URL:资源定位符,表示浏览器重定向的目标页面
调用Redirect方法,将会忽略当前页面全部输出而直接定向到被指定的页面,即在页面中显示设置的响应正文都被忽略
例如:网页重定向
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>重定向</title> 7 </head> 8 <body> 9 <% 10 if datepart("yyyy",now()) <> "2000" then '判断当前时间中的年份 11 Response.Write "欢迎您!" 12 Response.Redirect "index_02.asp" 13 end if 14 %> 15 </body> 16 </html>
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> </head> <% Response.Write "欢迎浏览index_02页面中的内容" %> <body> </body> </html>
调用Response对象的BinaryWrite方法能够不进行任何字符集转换,而直接向客户端浏览器发送二进制数据。
语法:
Response.BinaryWrite Variable
Variable:是一个变量,它的值是将要输出的二进制数据。二进制数据通常是指非文字资料,如图像文件,声音文件等
例如:输出二进制数据
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>表单</title> 7 </head> 8 <body> 9 <form id="form1" name="form1" method="post" action="code.asp"> 10 <p>用户名: 11 <input name="name" type="text" id="name" /> 12 <p>性 别 13 <input name="sex" type="radio" value="男" checked="checked"/> 14 男 15 <input name="sex" type="radio" value="女"/> 16 女 17 <p style="width:200px" align="center"> 18 <input type="submit" name="Submit1" value="提交" /> 19 <input type="reset" name="submit2" value="重置" /> 20 </form> 21 </body> 22 </html>
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>无标题文档</title> 7 </head> 8 <% 9 dim counter,array(2) 10 counter=request.TotalBytes '得到客户端以post方式发送的表单数据的字节数 11 array(0)=request.BinaryRead(counter) '以二进制方式读取数据 12 Response.BinaryWrite array(0) '输出二进制数据 13 %> 14 <body> 15 </body> 16 </html>
Cookie其实是一个字符串或者一个标记。当一个包含Cookie的页面被用户浏览器读取时,浏览器就会为这个站点自动创建Cookie文件,将此文件保存在系统目录中的Cookie文件夹中,而且会把接受的数据写进这个文件,这样一个Cookie就被存入到本地硬盘中,当须要时该网站能够从用户的本地硬盘读取这些Cookie值,Cookie文件中 的变量称为Cookie变量。
Cookie在指定的声明周期内都有效,因此WEB设计人员可使用Cookie在各个不一样的ASP页面间传递变量
a.写入Cookie
使用Response对象的cookies数据集合能够在客户端写入Cookie
语法:
Response.Cookies(cookiesname)[(key) | .attribute]=value
cookiesname:必选参数,指定Cookie的名字
key:可选参数,设置Cookie关键字
attribute:Cookie的属性参数,指定cookie自身的有关信息。
value:表示指定给Cookie的值
名称 | 描述 |
Expires | 仅可写入,指定该Cookie到期的时间 |
Domain | 仅可写入,指定Cookie仅送到该网域 |
Path | 仅可写入,指定Cookie仅送到该路径 |
Secure | 仅可写入,设置该Cookie的安全性 |
HasKeys | 只读,指定Cookie是否包含关键字,也就是断定Cookies目录下是否包含其余Cookies |
b.读取Cookie
使用Request对象的Cookie数据集合来读取cookie的值
语法:
Request.Cookies(cookiesname)[(key) | .attribute]
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>在网页中使用Cookie</title> </head> <body> <% Response.Cookies("user")("username")="UserLi" '定义cookies变量关键字 Response.Cookies("user")("password")="pwdpwd" ' Response.Cookies("user").Expires=date()+1 '定义Cookies变量User的有效期 %> <a href="code.asp">查看cookies变量</a> </body> </html>
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> </head> <% if request.Cookies("user").haskeys then 'Cookies变量user包含关键字 for each key in request.Cookies("user") '遍历关键字 Response.Write "Cookies 关键字" & key & "的值为:" & Request.Cookies("user")(key) & "<br><br>" next end if %> <body> </body> </html>
调用Response对象的end方法可使WEB服务器上的ASP处理程序中止处理ASP脚本,并返回当前结果,此语法后面的内容将不会被处理
语法:
Response.end
使用Response对象的end方法能够强制结束ASP程序的执行,在调试程序时能够应用该方法。
ASP程序是在WEB服务器上执行的,在WEB站点中建立一个基于ASP的应用程序以后,能够经过Application对象在ASP应用程序的全部用户之间共享信息。也就是说,Application对象中包含的数据能够在整个WEB站点中被全部用户使用,而且能够在网站运行期间持久保存数据。应用Application对象能够完成统计网站的在线人数、建立多用户游戏及多用户聊天室等功能
语法:
Application.collection | method
collection:Application对象的数据集合
method:Application对象的方法
Application对象能够定义应用级变量,应用级变量是一种对象级的变量,隶属于Application对象,它的做用域等同于Application对象的做用域
例如,经过Application对象定义一个应用级变量
<% Application ("Username")="Manager"%>
Application对象没有内置的属性,其成员如表
成员 | 描述 |
Contents集合 | 在Application层次的全部可用的变量集合,不包含使用<Object>标记创建的变量 |
StaticObject集合 | 在Global.asa文件中经过使用<Object>标记创建的Application层次的变量集合 |
Contents.Remove方法 | 从Application对象的Contents集合中删除一个项目 |
Contents.RemoveALL方法 | 从Application对象的Contents集合中删除全部项目 |
Lock方法 | 锁定Application对象,其余用户就不能修改同一个Application变量 |
Unlock方法 | 解除Application变量的锁定状态 |
Application_OnStart事件 | 当应用程序的第一个页面被请求时,触发这个事件 |
Application_OnEnd事件 | 当WEB服务器关闭时这个事件中的代码被触发 |
绝大部分的Application应用级变量都存放于Contents集合中,Contents数据集合包含全部经过脚本命令添加到应用程序中的项目,可使用Contents集合获取给定的应用程序做用域的项目列表或者指定一个特殊项目为操做对象,当建立一个新的Application应用级变量时,其实就是在Contents集合中添加了一项。
语法:
Application.Contents(key)
key:用于指定要获取的项目的名称
Application对象的Contents数据集合包含用Server对象的createobject方法建立的对象和经过Application对象声明创建数值变量,不包含以<Object>标记定义的对象,存储在Application集合中的信息在整个应用程序执行期间有效且具备程序做用域
如例:访问应用级变量
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> <% '定义应用级变量 Application("user")="userLi" Application("login")=32 '输出Contents集合成员 for each key in Application.Contents response.write("<br>" & key & "=" & Application.Contents(key)) next %> </body> </html>
Application对象的Application_OnStart事件和Application_OnEnd事件以及Session对象的Session_OnStart事件和Session_OnEnd事件都是定义在Global.asa文件中的
Global.asa文件是用来存放执行任何ASP应用程序期间的Application、Session事件程序,当Application或者Session对象被第一次调用或结束时,就会执行该Global.asa文件内的对应程序。一个应用程序只能对应一个Global.asa文件,该文件只能存放在网站的根目录下才能正常运行。
如例:制做网站计数器
<script language="vbscript" runat="server"> sub Application_OnStart() if Isempty(Application("Counter")) then Application.Lock() Application("Counter")=0 Application.UnLock() end if //访问量增长1 Application.Lock() Application("Counter")=Application("Counter")+1 Application.UnLock() end sub </script>
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> 您是第 <% response.Write Application("Counter") %> 位访问者 </body> </html>
使用Session对象能够存储用户我的会话所需的信息。当用户站点不一样页面切换时,存储在Session对象中的变量不会清除。使用Session对象能够实现用户信息在多个WEB页面共享,还能够跟踪浏览者的访问路径,这样对了解页面的访问状况及网站的定位都有帮助
语法:
Session.collection | property | method
collection: Session对象的集合
property:Session对象的属性
method:Session对象的方法
注意:使用Session变量的时候必定要注意拼写问题,WEB服务器不提供相应的语法检查,Option Explicit语法也不起做用
Session对象的成员以下表所示
成员 | 描述 |
Contents集合 | 包含经过脚本命令添加到应用程序中的变量、对象 |
StaticObject集合 | 包含由<Object>标记添加到Session中的对象 |
SessionID属性 | 系统用来存放而且识别该链接期间所使用的惟一标识码,它的数据类型是长整型,而且是只读的 |
Timeout属性 | 应用程序会话的超时时限,以分钟为单位 |
CodePage属性 | 将用于符号映射的代码页 |
LCID属性 | 现场标识 |
Abandon方法 | 释放Session对象占用的资源 |
Session_OnStart事件 | 还没有创建会话的用户请求访问应用程序的页面时,触发该事件 |
Session_OnEnd事件 | 会话超时或者会话被放弃时,触发该事件 |
Session对象的Contents数据集合包含经过Server对象的CreateObject方法建立的对象和Session对象声明创建的变量,不包含以<Object>标记定义的对象。Session对象存在期间,存储在Session对象的Contents数据集合中的信息是有效的。
语法:
Session.Contents(key)
key:用于指定要获取的项目名称
Session对象的Contents数据集合支持For Each ... Next 和 For ... Next 循环,可使用循环遍历Contents数据集合中的成员
例如:访问Session会话级变量
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title></title> 7 </head> 8 <body> 9 <% 10 '定义会话级变量 11 session("username")="dzj" 12 session("grand")="星级会员" 13 '输出集合的成员 14 for each key in session.Contents 15 response.Write("<br>" & key & "=" & Session.Contents(key)) 16 next 17 %> 18 </body> 19 </html>
在建立会话时,服务器会为每个会话生成一个单独的标识,使用Session对象的SessionID属性能够返回当前会话的惟一标识符,即返回用户的会话标识。
Session对象只提供了Abandon方法,该方法将删除全部存储在Session对象中的数据并释放其所占的资源。
语法:
Session.Abandon
若是未显式调用Abandon方法,服务器将在会话超时后删除Session对象数据。调用Abandon方法时,会话对象不会被当即删除,而是中止对该Session对象的监控,而后把Session对象放入队列,按顺序进行删除。也就是说,在调用Abandon方法后,能够在当前页上访问存储在Session对象中的变量,但在进入另外一个WEB页面时,先前设置Session对象的变量值将为空,服务器会为用户新建立一个Session对象
如例:释放Session对象
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> <% '调用Abandon方法 Session.Abandon() '输出Session对象的对象数据 Response.Write "用户的SessionID为:" & Session.SessionID & "<br>" '定义会话级变量 session("username")="dzj" session("grand")="星级会员" '输出集合的成员 for each key in session.Contents response.Write("<br>" & key & "=" & Session.Contents(key)) next %> <a href="code.asp" target="_balck">查看Session对象数据</a> </body> </html>
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> </head> <% username=session("username") if username="" then username="空" end if response.Write "上一页的username为:" & username response.Write "<br>为用户新建的SessionID为:" & session.SessionID %> <body> </body> </html>
ASP的Server服务对象提供了对服务器上的属性和方法的访问,从而用来获取WEB服务器的特性和设置。
使用Server对象能够建立各类服务器组件对象实例,程序调用建立对象的属性、方法以实现访问数据库、对文件进行输入、输出操做以及在WEB页上自动轮显广告图像等功能。使用Server对象还能够完成ASP脚本、处理HTML和URL编码以及获取服务器对象的路径信息等。
语法:
Server.property | method
property:Server对象的属性
method:Server对象的方法
例如:经过Server对象建立一个Conn的ADO的Connection对象实例
<%
dim conn
set conn = Server.CreateObject("ADODB.Connection")
%>
Server对象的成员如表所示
成员 | 描述 |
ScriptTimeOut属性 | 设置ASP脚本执行的超时时间 |
CreateObject方法 | 建立服务器组件的实例 |
MapPath方法 | 将指定的虚拟路径映射为物理路径 |
HTMLEncode方法 | 将HTML编码应用到指定的字符串 |
URLEncode方法 | 将URL编码规则应用到字符串 |
Execute方法 | 中止当前页面的执行,把控制转到指定路径的网页,当前环境也被传到新的网页,在该页面执行完成后将控制传递回原来的页面 |
Transfer方法 | 与Execute方法相似。不一样的是,当新页面执行完成时,执行过程结束而不是返回原来的页面继续执行 |
Server对象只提供一个ScriptTimeout属性,用于设置一个ASP脚本执行的超时时间,即脚本所容许的最长执行时间,若是在指定的时间内脚本没有执行完成,系统将中止其执行,而且显示超时错误。应用该属性能够防止出现一些进入死循环的程序致使页面服务器过载的问题
语法:
Server.ScriptTimeout=numSeconds
numSeconds:用于指定脚本运行的最大可执行秒数,默认为90秒
如例:设置ASP脚本执行时间
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> <% Server.ScriptTimeout=10 dim counter counter=0 while(1) counter=counter+1 wend %> </body> </html>
上面的代码若是未设置脚本执行时间,程序将一直执行到服务器关闭,因此,设置合适的超时时间(脚本的)是十分必要的,不然将浪费服务器资源,堵塞用户请求,形成服务器忙的状态。
调用Server对象的CreateObject方法能够建立服务器组件的实例,实现一些依赖脚本语言不能实现的功能,ASP有标准的函数调用接口,只要在操做系统上登记注册了组件程序,COM就会在系统注册表里维护这些资源,以供程序员调用
语法:
Server.CreateObject(progID)
progID:用于指定要建立的对象类型,其格式为
[Vendor. ] Component [.Version]
Vendor:表示拥有该对象的应用名
Component:表示该对象组件的名字
Version:表示版本号
例如:建立一个名为FSO的FileSystemObject对象实例,并将其保存在Session对象变量中
<%
dim fso
set fso=Server.CreateObject(“Scripting.FileSystemObject”)
Session("ofile")=fso
%>
CreateObject方法仅能建立外置对象实例,不能用来建立系统的内置对象实例。用该方法建立的对象实例仅在建立它的页面中是有效的,即当处理完该页面程序后,建立的对象会自动消失,若想在其余页面引用该对象,能够将对象实例存储在Session对象或者Application对象中。
server对象的MapPath方法用于返回虚拟目录 在WEB服务器上的真是路径
语法:
Server.MapPath(String)
String:用于指定虚拟路径的字符串
虚拟路径若是是以"/"或"\"开始表示,MapPath将返回服务器端的宿主目录,若是虚拟路径以其余字符串开始,MapPath将把这个虚拟路径看成相对路径,相对于当前调用MapPath的页面,返回物理路径。
若想取得当前运行的ASP文件所在的真实路径,可使用Request对象的服务器变量PATH_INFO来映射当前文件的物理路径。
例如:获取文件的真实物理路径
调用Server对象的MapPath方法输出网站所在根目录、根目录下temp.asp文件的路径、与当前文件同目录file.txt文件的路径以及应用服务器环境变量PATH_INFO映射当前文件所在路径。
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> <% Response.Write "Server.MapPath(""\"")返回网站根路径:" & Server.MapPath("\") & "<br>" Response.Write "Server.MapPath(""/temp.asp"")返回" & Server.MapPath("/temp.asp") & "<br>" Response.Write "Server.MapPath(""file.txt"")返回" & Server.MapPath("/temp.asp") & "<br>" Response.Write "Server.MapPath(Request.ServerVariables(""PATH_INFO""))返回当前文件的物理路径" & Server.MapPath(Request.ServerVariables("PATH_INFO")) & "<br>" %> </body> </html>
一般状况下,HTML标记会被浏览器解释执行,不会显示在浏览器上,若是想将浏览器如实的显示在浏览器上,能够调用Server对象的HTMLEncode方法,该方法用于将HTML标记进行编码
语法:
Server.HTMLEncode(String)
String:指定要编码的字符串
ASP提供ObjectContext对象控制ASP的事务处理,事务在服务器端运行,主要用于对数据库提供可靠的操做,当对数据库进行关联更改或者是同时更新多个数据库的时候,须要肯定全部更改是否都准确执行,若是其中任何一项更改失败,数据库中的数据将恢复到操做以前的状态,只有在全部更改都准确执行时,数据的更新才有效。
ASP事务处理程序是以MTS(Microsoft Transaction Server)事件处理系统为基础的,MTS是以组件为主的事件处理系统,用于开发、配置和管理Internet、Intranet服务器应用程序。MTS不能对文件系统或者其余非事务性资源的更改进行恢复工做。
ObjectContext对象的使用语法以下:
objectContext.method
method:ObjectContext对象的方法
例如:应用ObjectContext对象终止网页启动的事务处理程序
<% ObjectContext.SetAbort %>
ObjectContext 对象是经过和事务服务器通讯来对事务进行控制的,因此在ASP中使用ObjectContext以前必须声明该页包含事务。在ASP中使用@TRANSACTION关键字来标识当前运行页面要以MTS事务服务器来处理,@TRANSACTION指令必须位于ASP文件中的第一行,不然会产生错误
语法:
<% @TRANSACTION=VALUE %>
VALUE:@TRANSACTION关键字的取值
@TRANSACTION关键字取值
取值 | 描述 |
Required | 开始一个新的事务或者加入一个已经存在的事务 |
Requires_New | 每次都开始一个新的事务 |
Supported | 加入一个现有的事务处理,但不开始一个新的事务 |
Not_Supported | 即不加入也不开始一个新的事务 |
ObjectContext对象提供两个方法和两个事件控制ASP的事务处理。ObjectContext对象的成员如表
成员 | 描述 |
SetAbort方法 | 终止当前网页所启用的事务处理,将事务先前所作的处理撤销到初始状态 |
SetComplet方法 | 成功提交事务,完成事务处理 |
OnTrandactionAbort事件 | 事务终止时触发的事件 |
OnTransactionCommit事件 | 事务成功提交时触发的事件 |
ObjectContext对象提供了SetAbort方法和OnTransacctionAbort事件进行终止事务的处理。
a.SetAbort方法
回滚操做
语法:
ObjectContext.SetAbort
b.OnTransactionAbort事件
脚本自己不能判断事务处理是成功仍是失败,能够编写事务终止或者成功提交时调用的事件,显式说明事务处理的状况,OnTransactionAbort事件是当事务处理失败时引起的。
语法:
Sub OnTransactionAbort()
...处理程序
End Sub
若是事务异常终止,会触发该事件
ObjectContext对象提供了SetComplet方法和OnTransactionCommit事件对事务成功完成进行处理
a.SetComplet方法:提交
语法:
ObjectContext.SetComplet
调用该方法将会忽略脚本中之前调用过的任何SetAbort方法
b.OnTransactionCommit事件
当前事务成功时引起
语法:
Sub OnTransactionCommit()
...处理程序
End Sub
例如:应用Objectcontext进行事务处理
①在index.asp页面中创建表单并插入文本框及按钮控件,用于添加管理员信息
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> <form name="form1" method="post" action="code.asp"> <p>用户名: <input name="txt_name" type="text" id="txt_name" /> </p> <p>密 码: <input name="txt_pwd" type="text" id="txt_pwd" /> </p> <p> <input name="add" type="submit" id="add" value="添加" /> <input name="reset" type="reset" value="重置" /> </p> </form> </body> </html>
②在程序处理页面code.asp中,首先创建数据库链接、获取表单传递的数据,而后执行Insert Into语句插入数据。若是此过程当中出现异常则调用ObjectContext对象的Setabort方法终止事务,不然调用ObjectContext对象的SetComplet方法完成事务。分别定义OnTransactionAbort事件和OnTransactionCommit事件用于提示操做的执行结果
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> </head> <% '@Transaction=Required %> <% '建立数据库链接 Set conn=Server.CreateObject("ADODB.Connection") sql="Driver={Microsof Access Driver (*.mdb)};DBQ=" & Server.MapPath("DataBase/db.mdb") & "" conn.open(sql) '获取表单数据 txt_name=Request.Form("txt_name") txt_pwd=Request.Form("txt_pwd") if not isempty(Request("add")) then if txt_name<>"" and txt_pwd<>"" then on error resume next '执行Insert Into语句 sqlStr="insert into tb_user(UserName,PassWord) value('"&txt_name&"','"&txt_pwd&"')" conn.Execute(sqlStr) '若是出现异常则调用SetAbort方法终止事务 If error.num>0 then error.clear ObjectContext.SetAbort() End if '调用SetComplet方法完成事务 ObjectContext.SetComplete() '事务执行成功时触发的事件 Sub OnTransactionCommit() Response.Write("<Script language='javascript'> alert('添加信息成功'); window.location.href='index.asp';</script>") End sub '事务执行失败时触发的事件 Sub OnTransactionAbort() Response.Write("<Script language='javascript'> alert('添加信息失败,请从新输入'); window.location.href='index.asp';</script>") Response.Flush() End Sub Else Response.Write("<Script language='javascript'> alert('请填写完整信息内容!'); window.location.href='index.asp';</script>") End If End If %> <body> </body> </html>