当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP编程入门进阶(四):内置对象Request

ASP
ASP基础讲座(下)
解决IIS5 HTTP500内部错误
ASP 3.0高级编程(四十六)
ASP 3.0高级编程(四十五)
ASP 3.0高级编程(四十四)
ASP 3.0高级编程(四十三)
ASP 3.0高级编程(四十二)
ASP 3.0高级编程(四十一)
ASP 3.0高级编程(三十九)
ASP 3.0高级编程(三十八)
ASP 3.0高级编程(三十七)
ASP 3.0高级编程(三十六)
ASP 3.0高级编程(三十五)
ASP 3.0高级编程(三十四)
ASP 3.0高级编程(三十三)
ASP 3.0高级编程(三十二)
ASP 3.0高级编程(三十一)
ASP错误代码说明
jscript错误代码及相应解释大全
ASP错误处理

ASP编程入门进阶(四):内置对象Request


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 93 ::
收藏到网摘: n/a

系统学习ASP,就是先从ASP的几大内置对象开始的.
一般称五大对象:Request、Response、Server、Session、Application
今天先来看看Request对象。
当然一直还没有提到的就是,ASP到底是什么样?我看代码怎么知道是ASP代码?
很简单,当看到“<%”和“%>”就表明是ASP,并且两者之间的就是ASP源码。
那为什么要学对象,对象的作用又是如何的?
其实ASP所提供的这些可在脚本中使用的内建对象,使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户信息,从而使对象开发者摆脱了很多烦琐的工作。
而Request对象的主要作用就是:在服务器端接受并得到从客户端浏览器提交或上传的信息。Request 对象可以访问任何基于 HTTP 请求传递的所有信息,包括从Form表单用 POST 方法或 GET 方法传递的参数、cookie 等。
一,Request.form("name")
这是接受上一页的信息时,常会用到的一种接受方式。Request是ASP对象,form则是Request对象所包含的对象集合(这要有区别与HTML页中的form表单,是不一样的),name也就是上一页表单中的某个文本框、密码框,或者隐藏域等的名称。并且还有一点非常重要:上一页Form表单的递交方法一定要为Post方法。
说不如做,看下面两个页面程序。
1,test1.html(本页是HTML的,主要提供输入信息的平台,以将信息提交到再下面的ASP页进行接受处理)

[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]
注意method就是post,且提交的页面action为submit1.asp。
2,submit1.asp(ASP页面,进行从test1.html接受name="yourname"和name="yourpwd"的两个值)

your name is:<%=request.form("yourname")%><br>
your pwd is:<%=request.form("yourpwd")%>

通过IIS进行HTTP协议的页面调试,你会发现两个页面进行了关联:test1.html中动态输入的name和pwd,在submit1.asp也则进行相应的动态显示。
这就是接收、提取并显示信息的全过程。
3,改进的submit1.asp

<% for each i in request.form%>
<%=i%>:
<%=request.form(i)%>
<br>
<%next%>

采用了for循环语句,将上页所有的form标签信息进行接受、并显示。这在上表单页有很多项目时,非常快捷地出来结果。
首先仍然是request.form,只是后面的("yourname")或("yourpwd")变成了变量 i
通过for循环对该form集合进行遍历提取,这是一种不同于机械地“有几个就提取几个”的编程思想,注意掌握。
二,Request.querystring("name")
此时由Request.form变为Request.querystring,最主要的还是上页表单递交时,采用的什么方法。当采用post就用Request.form,否则当采用get时就采用Request.querystring了。
那Request.querystring最大特色在哪里呢?Request.querystring能检索并接受 HTTP 查询字符串中变量的值,而HTTP 查询字符串则是由问号 (?) 后的值指定的。说了大半天,继续看一个程序。
1,test2.html(本页同是HTML的,主要提供输入信息的平台,以将信息提交到再下面的ASP页进行接受处理,注意提交方法是get)

[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]
和test1.html最大区别也就是method="get"
2,submit2.asp(ASP页面,进行从test1.html接受name="yourname"和name="yourpwd"的两个值)

your name is:<%=request.querystring("yourname")%><br>
your pwd is:<%=request.querystring("yourpwd")%>

注意此时的浏览器地址栏,文件后面多出了?号,?号后面附有变量名及所被赋的值,当然多个变量名之间是用&号进行连接的。
而Request.querystring最大的功能就是能将?号后面的这些变量名分开,并且所对应的值也一一取出。
刚才说到不同的变量名之间是用&号进行连接,但如果是相同的变量名时,request.querystring到底是提取前一个?后一个?还是两个一起?
用例子说话。
3,query.asp(名称是query.asp,因为在该页程序中是反馈给自己。)

<a href="query.asp?bookname=《asp教程》">《asp教程》</a><br>
<a href="query.asp?bookname=《jsp教程》">《jsp教程》</a><br>
<a href="query.asp?bookname=《xsp教程》&bookname=《xml》">《xsp教程》</a><br>
you chosed <%=request.querystring("bookname")%>

很明显当点《xsp教程》时,显示的是“《xsp教程》,《xml》”,中间自动加了“,”号。
最后仍需要说明的是:request.querystring在分页程序里面是经常用到的。象http://www.cnbruce.com/database/
三,Request.ServerVariables("xxx")
其中ServerVariables就是服务器的环境变量了,该变量包含的内容比较多,我们同样先采用for循环进行遍历查看下。
1,server1.asp

<%for each i in request.servervariables%>
<%=i%>:
<%=request.servervariables(i)%>
<hr>
<%Next%>

可以看到一大堆环境变量,其中还有没有值的,下面摘取几个比较常用的。

http_user_agent(客户端机器的相关环境):<%=request.servervariables("http_user_agent")%><br>
http_accept_language(浏览语言):<%=request.servervariables("http_accept_language")%><br>
CONTENT_LENGTH(客户端发出内容的长度):<%=request.servervariables("CONTENT_LENGTH")%><br>
CONTENT_TYPE(内容的数据类型。如“text/html”。同附加信息 的查询一起使用,如 HTTP 查询 GET、POST 和 PUT):<%=request.servervariables("CONTENT_TYPE")%><br>
LOCAL_ADDR(返回接受请求的服务器地址。如果在绑定多个IP地址的多宿主机器上查找请求所使用的地址时,这条变量非常重要):<%=request.servervariables("LOCAL_ADDR")%><br>
REMOTE_ADDR(发出请求的远程主机client的 IP 地址):<%=request.servervariables("REMOTE_ADDR")%><br>
SERVER_NAME(出现在自引用 URL 中的服务器主机名、DNS 化名 或 IP 地址):<%=request.servervariables("SERVER_NAME")%><br>
SCRIPT_NAME(主机名后面的虚拟地址):<%=request.servervariables("SCRIPT_NAME")%><br>
LOGON_USER(用户登录 Windows NT 的帐号):<%=request.servervariables("LOGON_USER")%><br>
SERVER_PORT(发送请求的端口号):<%=request.servervariables("SERVER_PORT")%>

根据以上的SERVER_NAME是提取的服务器主机名,SCRIPT_NAME是提取的虚拟地址,则两者的结合再加上http:// 是不是就是个完整的网址呢。
2,server2.asp

<%a=request.servervariables("server_name")%>
<%b=request.servervariables("script_name")%>
<%="http://"&a&b%>

其中http:// 用引号引起,表示是一字符串,a和b分别是对应了具体值的变量,在ASP中进行这样的连接就是采用&号。
根据这个结果,我们是不是就可以随时提取动态的URL地址了。
再来看看query.asp,要求一定要保存为query.asp的,因为如果不是该文件名,程序指向就会出错。
但现在的这个文件就随便你保存为什么文件,都一样执行。
3,xxx.asp(随便你保存成什么文件)

<%filepath=request.servervariables("script_name")%>
<a href="<%=filepath%>?bookname=《asp教程》">《asp教程》</a><br>
<a href="<%=filepath%>?bookname=《jsp教程》">《jsp教程》</a><br>
<a href="<%=filepath%>?bookname=《xsp教程》&bookname=《xml》">《xsp教程》</a><br>
you chosed <%=request.querystring("bookname")%>

先将当前文件的地址取出并赋值给变量filepath
然后所有的链接地址开头都只要直接引用该变量就OK了。
是不是很有用,有点万能的感觉。
四,Request.Cookies("name")
不用我说,Cookie是个很重要的东西,究竟如何,等我们学完了下面的对象Response后,会有个特别Cookie的专题讲座。
就先搁着吧。
以上四则运用,属于Request对象的所包含的四个对象集合:form、querystring、servervarivables、cookies。当然还有个ClientCertificate就不说啦
一个ASP内置对象除了对象集合外还有对象属性对象方法
Request对象的对象属性只有一个就是TotalBytes(接受的字节数),你可将

<%=request.totalbytes%>

该语句加入到任何一个接受数据的ASP页面中进行显示了。
Request对象的对象方法也还是一个:BinaryRead 。
说实话,这东东不常用,我也没用过,呵呵。
OK~!有关Request对象的学习就差不多了,最主要是先好好理解三个对象集合,cookies不着急,下节继续学习对象Response。