• 欢迎访问极客公园网站,WordPress信息,WordPress教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入极客公园 QQ群
  • Git主题现已支持滚动公告栏功能,兼容其他浏览器,看到的就是咯,在后台最新消息那里用li标签添加即可。
  • 最新版Git主题已支持说说碎语功能,可像添加文章一样直接添加说说,新建说说页面即可,最后重新保存固定连接,演示地址
  • 百度口碑求点赞啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊http://koubei.baidu.com/s/gitcafe.net
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏极客公园吧

Request对象

ASP 马 志远 9年前 (2011-02-18) 731次浏览 1个评论

   Request是Asp中非常重要的对象,他的主要功能是接收从客户端浏览器发送的请求信息、收集服务器端的环境变量。通常用来接收浏览器传递过来的查询字符串、表单、Cookies等等。客户端可通过表单或者在URL地址后面提供查询字符串的方法向服务器端提交数据,然后用Request对象来获得相关数据。简单地说,Request负责Asp的Input输入功能。Request包含多种集合、属性与方法。Request的语法:

   Request[.Collection|Property|Method](Variable)
 
  其中方括号中的内容表示Request的集合、属性与方法,圆括号中的内容是数据集合变量名。
 
  Request对象的TotalBytes属性,获得客户端发送的请求正文中的总字节数,他是一个只读属性。语法:
 
  Request.TotalBytes
  
  例如:
 
<%
    Dim count
    Count = Request.TotalBytes
%>
 
  Request对象的BinaryRead方法的功能是取得HTML表单的源内容,它是以二进制的形式读取客户端以POST方法传递过来的数据。例如:
 
<%
    Dim a,b
    a = Request.TotalBytes
    b = Request.BinaryRead(a)
%>
 
  此方法不能与Request.Form 一起使用,否则会出错。
 
   Request最重要的是他的集合,这可是从浏览器获取传递的信息必须用到的。
 
  Form集合,包含了HTTP请求中所有表单和、元素和他们的值。
  
  Cookies集合,获得存储在浏览器的Cookies。
 
  Querystring集合,得到查询字符串中变量的值。
 
  ServerVariables集合,预得环境变量的值。
 
  ClientCertificate集合,得到在HTTP请求中客户端认证的字段值。
 
 
1.Form集合

 

  Form集合是Request对象中使用比较多的数据集合,通过它可以获得客户端用POST方法提交的表单各项元素的值。。语法:
 
  Request.From(element)[(index)|.count]
 
  这里的element是指定集合要检索的表元素单名称;index是当表单元素中有多个值时,使用它可以按照索引形式存放,然后以索引号取值;count表示集合中元素的个数;Form集合按请求正文中的参数名称来索引。Request.Form(element)的值是请求正文中所有名称为element的数组。通过Request.Form(element).count可以确定参数中存在多少个值,若参数为关联多个值则计算为1,若找不到参数则为0。要引用有多个值的表单元素中的单个值,必须指定他的index值。Index值可以是从1到Request.Form(element).count中的任意数字。
 
  例如,要取得用户通过组册表单填写的用户名username元素的值:
 
  Name = Request.Form(“username”)
 
  利用Count可以取得与元素相关的值的个数:
 
  Request.Form(“username”).count
 
  From集合通过POST提交数据,下面这个例子演示通过提交一个HTML表单, 以两种方式从Form集合中获取提交的信息。新建一个文件,命名为post.html,然后复制下面的代码:
 
<html>
<head>
<title>提交表单的页面</title>
</head>
<body>
<form name=”form1″ method=”post” action=”get.asp”>
 <table width=”674″ border=”1″ align=”center” cellpadding=”0″ cellspacing=”0″ bordercolor=”#0000CC” bordercolordark=”#33CCFF”>
    <tr>
      <td colspan=”2″><div align=”center”>
        <p>Asp的注册表单示例      </p>
      </div></td>
    </tr>
    <tr>
      <td width=”156″><div align=”center”>用户名:</div></td>
      <td width=”512″><input name=”用户名” type=”text” id=”用户名” value=”请输入您的用户名!” size=”20″ maxlength=”20″></td>
    </tr>
    <tr>
      <td><div align=”center”>密码:</div></td>
      <td><input name=”密码” type=”password” id=”密码” value=”123456″ size=”20″ maxlength=”20″></td>
    </tr>
    <tr>
      <td><div align=”center”>电子邮件:</div></td>
      <td><input name=”电子邮件” type=”text” id=”电子邮件” value=”webmaster@www.com” size=”30″ maxlength=”30″></td>
    </tr>
    <tr>
      <td><div align=”center”>真实姓名:</div></td>
      <td><input name=”姓名” type=”text” id=”姓名” value=”不告诉你” size=”20″ maxlength=”20″></td>
    </tr>
    <tr>
      <td><div align=”center”>性别:</div></td>
      <td><p>
        <label>
          <input type=”radio” name=”性别” value=”男”>
          男</label>
        <br>
        <label>
          <input type=”radio” name=”性别” value=”女”>
          女</label>
        <br>
        <label>
          <input type=”radio” name=”性别” value=”太监”>
          太监</label>
        <br>
        <label>
          <input type=”radio” name=”性别” value=”人妖”>
          人妖</label>
        <br>
        <label>
          <input name=”性别” type=”radio” value=”未知”>
          基因变异或无性别</label>
        <br>
        <label>
          <input name=”性别” type=”radio” value=”保密” checked>
          保密</label>
        <br>
      </p></td>
    </tr>
    <tr>
      <td><div align=”center”>联系地址:</div></td>
      <td><input name=”地址” type=”text” value=”请输入您的联系地址!” size=”50″ maxlength=”50″></td>
    </tr>
    <tr>
      <td><div align=”center”>联系电话:</div></td>
      <td><input name=”电话” type=”text” value=”021-12345678″ size=”15″ maxlength=”15″></td>
    </tr>
    <tr>
      <td><div align=”center”>兴趣爱好:</div></td>
      <td><p>
        <label>
          <input type=”checkbox” name=”爱好” value=”音乐”>
          音乐</label>
        <label>
          <input type=”checkbox” name=”爱好” value=”舞蹈”>
          舞蹈</label>
        <label>
          <input type=”checkbox” name=”爱好” value=”游戏”>
          游戏</label>
        <label>
          <input type=”checkbox” name=”爱好” value=”看书”>
          看书</label>
        <label>
          <input type=”checkbox” name=”爱好” value=”美食”>
          美食
        </label>
        <br>
        <label>
          <input type=”checkbox” name=”爱好” value=”上网”>
          上网</label>
        <label>
          <input type=”checkbox” name=”爱好” value=”购物”>
          购物</label>
        <label>
          <input type=”checkbox” name=”爱好” value=”逛街”>
          逛街</label>
        <br>
      </p></td>
    </tr>
    <tr>
      <td><div align=”center”>注册目的:</div></td>
      <td><select name=”注册目的” size=”5″ multiple>
        <option value=”交友” selected>交友</option>
        <option value=”恋爱”>恋爱</option>
        <option value=”学习”>学习</option>
        <option value=”娱乐”>娱乐</option>
        <option value=”消遣”>消遣</option>
      </select></td>
    </tr>
    <tr>
      <td><div align=”center”>自我描述:</div></td>
      <td><p>输入5个关键字来描述自己</p>
      <p>
         <input name=”自我描述” type=”text” value=”玉树临风” size=”20″ maxlength=”20″>
         <input name=”自我描述” type=”text” value=”时尚达人” size=”20″ maxlength=”20″>
      </p>
      <p>
        <input name=”自我描述” type=”text” value=”工作狂” size=”20″ maxlength=”20″>
        <input name=”自我描述” type=”text” value=”宅” size=”20″ maxlength=”20″>
        </p>
      <p>
        <input name=”自我描述” type=”text” value=”小气鬼” size=”20″ maxlength=”20″>
      </p></td>
    </tr>
    <tr>
      <td><div align=”center”>个人说明:</div></td>
      <td><textarea name=”个人说明” cols=”45″ rows=”5″>这家伙很懒,什么都没有留下。</textarea></td>
    </tr>
    <tr>
      <td><div align=”center”></div></td>
      <td><input type=”submit” value=”提交”>
          <input type=”reset” value=”重置”></td>
    </tr>
 </table>
</form>
</body>
</html>
 
 
  除了这个post.html以外我们还需要一个ASP文件来接收传递过来的数据,上面的文件中method=”post”表示以POST的方法提交表单,action=”get.asp”其中get.asp就是表单提交的目标文件,因此我们建立一个get.asp,并用Request对象的FORM集合来读取刚刚提交的内容:
 
 
<%
Response.Write(“参数传递成功,下面将尝试用不同的方法读取参数:” &_
                “(TotalBytes: ” & Request.TotalBytes & ” bytes! )<br><br>”)
Response.Write(“共收到上个页面传递过来的元素” & Request.Form.count &_
               “个(相同名称的表单视为一组),下面是所有的表单内容:<br><br>”)
dim i
for i = 1 to Request.form.count
         Response.write(“表单中第” & i & “个元素的值为:<b>” & Request.form(i) & “</b>”)
         Response.write(“&nbsp;&nbsp;&nbsp;&nbsp;……..(” & Request.Form(i).count & “个参数!)<br />”)
         next
 
Response.Write(“<br><hr align=’left’ width=’50%’>”)
Response.Write(“<br><br>”)
Response.Write(“接下来,用常规方式查看表单内容:<br>”)
 
Response.Write(“刚才输入的用户名:” & Request.Form(“用户名”) & “<br>”)
Response.Write(“刚才输入的密码:” & Request.Form(“密码”) & “<br>”)
Response.Write(“电子邮件地址:” & Request.Form(“电子邮件”) & “<br>”)
Response.Write(“您的真实姓名:” & Request.Form(“姓名”) & “<br>”)
Response.Write(“您选择的性别是:” & Request.Form(“性别”) & “<br>”)
Response.Write(“您的联系地址:” & Request.Form(“地址”) & “<br>”)
Response.Write(“您的兴趣爱好:” & Request.Form(“爱好”) & “<br>”)
Response.Write(“您的联系电话:” & Request.Form(“电话”) & “<br>”)
Response.Write(“注册的目的:” & Request.Form(“注册目的”) & “<br>”)
Response.Write(“代表自己的标签:” & Request.Form(“自我描述”) & “<br>”)
Response.Write(“个人说明:” & Request.Form(“个人说明”) & “<br>”)
 
Response.Write(“<br><hr align=’left’ width=’50%’>”)
 
%>
 
  运行以后看看结果,下面粘贴上我自己的结果:
 
 
参数传递成功,下面将尝试用不同的方法读取参数:(TotalBytes: 816 bytes! )

共收到上个页面传递过来的元素11个(相同名称的表单视为一组),下面是所有的表单内容:

表单中第1个元素的值为:开心果    ……..(1个参数!)
表单中第2个元素的值为:11223344    ……..(1个参数!)
表单中第3个元素的值为:webmaster@www.com    ……..(1个参数!)
表单中第4个元素的值为:不告诉你    ……..(1个参数!)
表单中第5个元素的值为:太监    ……..(1个参数!)
表单中第6个元素的值为:单身公寓    ……..(1个参数!)
表单中第7个元素的值为:021-12345678    ……..(1个参数!)
表单中第8个元素的值为:音乐, 游戏, 看书, 美食, 上网    ……..(5个参数!)
表单中第9个元素的值为:交友, 学习, 娱乐    ……..(3个参数!)
表单中第10个元素的值为:乱七八糟, 胡思乱想, 工作狂, 宅, 熬夜    ……..(5个参数!)
表单中第11个元素的值为:这家伙很懒,什么都没有留下。是吗?    ……..(1个参数!)


接下来,用常规方式查看表单内容:
刚才输入的用户名:开心果
刚才输入的密码:11223344
电子邮件地址:webmaster@www.com
您的真实姓名:不告诉你
您选择的性别是:太监
您的联系地址:单身公寓
您的兴趣爱好:音乐, 游戏, 看书, 美食, 上网
您的联系电话:021-12345678
注册的目的:交友, 学习, 娱乐
代表自己的标签:乱七八糟, 胡思乱想, 工作狂, 宅, 熬夜
个人说明:这家伙很懒,什么都没有留下。是吗?


 
 
  这个例子分别用指定名称的方法和for循环遍历所有元素的方法,演示了Form集合的使用。当表单总出现两以上个相同名称的元素,就可以利用类似访问数组的方法指定他们的Index值,否则系统会输出所有该名称的元素的值,并以逗号隔开。
 
 
2.Querystring集合
 
  客户机浏览器与服务器交互的另一种方法就是通过Querystring集合传递信息。Querystring和Form集合的功能很相近,区别在于后者是通过HTML表单传递信息,前者通过URL传递数据和请求。请求中包含的参数就是Querystring集合的元素。Querystring的值由URL中“?”后的值指定。例如:
 
  http://127.0.0.1/Query.asp?username=value
 
  Querystring的语法:
 
  Request.Querystring(variable).[(index)|.count]
 
  其中Variable是QueryString中指定要检索的变量名称,Index是一个可选参数,用来检索多个Viarable值中的某一个值,他的值是从1到Querystring(variable).count之间的任何整数。使用Querystring集合在URL中传递信息可以在地址栏直接输入,也可以用超链接向下一个页面传递参数。例如:
 
  新建一个querystring.asp文件放在站点根目录,内容如下:
 
<%
Dim name,username,tel
name = Request.Querystring(“name”)
username = Request.Querystring(“username”)
tel = Request.Querystring(“tel”)
Response.Write(“姓名:” & name & “<br />” & “用户名:” & username & “<br />” &_
               “电话号码:” & tel)
%>
 
  在地址栏输入: http://localhost/querystring.asp?name=张三&username=zhangsan123&tel=13812345678,得到的运行结果如下:
 
姓名:张三
用户名:zhangsan123
电话号码:13812345678
 
  如果用超链接传递参数,可以这样写:
<a href=” http://localhost/querystring.asp?name=张三&username=zhangsan123&tel=13812345678”>点击这里查询</a&gt;
  得到的结果是一样的。
 
  下面演示一下一个Variable下有多个值的情况,我们对前面的文件做一下改动:
 
<%
Dim name,username,tel
for i = 1 to Request.Querystring(“name”).count
name = Request.Querystring(“name”)(i)
username = Request.Querystring(“username”)(i)
tel = Request.Querystring(“tel”)(i)
Response.Write(“姓名:” & name & “<br />” & “用户名:” & username & “<br />” &_
               “电话号码:” & tel & “<br /><br />”)
next
%>
 
  然后使用下面的URL
http://localhost/querystring.asp?name=张三&name=李四&name=王二麻子&username=zhangsan123&username=lisi19958&username=wangermazi&tel=13812345678&tel=01068687299&tel=053110086
  这个比较长呵呵,仔细看并不复杂。执行后显示的效果如下:
 
姓名:张三
用户名:zhangsan123
电话号码:13812345678

姓名:李四
用户名:lisi19958
电话号码:01068687299

姓名:王二麻子
用户名:wangermazi
电话号码:053110086

上面这个例子用一个For循环指定了Variable的index值,每循环一次i的值加1,用来取出Variable中的单个值。如果不指定Index值会是什么情况呢,我们去掉For循环,用上一个例子的代码,输出结果如下:
姓名:张三, 李四, 王二麻子
用户名:zhangsan123, lisi19958, wangermazi
电话号码:13812345678, 01068687299, 053110086
  
  可以看出当没指定Index的时候系统会输出指定参数名称的所有值,并且以逗号分隔。
 
  尽管Form集合和Querystring集合都可以用来传递信息,两者还是有一定的区别。首先Querystring只能传递少量信息,在提交数据例如写文章,用这样的方法显然很麻烦,而且对用户来说也不友好;在使用Querystring时可以直接在浏览器地址栏中输入查询字段,因此,在传递隐含信息例如密码的情况下,出于安全考虑使用Querystring显然不适合,而是使用From集合的Hidden元素对象来传递隐含信比较好;<form>标签的Method属性指定了表单的运行方式,该属性共有两个参数,Post和Get方法。Method=get时该表单主要从服务器端获取信息,Method=Post表示该表单用来向服务器发送信息。使用Form集合获取用户提交数据时用来提交数据的表单中需要使用Post方法,当使用Get方法时则不能使用Form集合获取数据,此时是通过Querystring集合从服务器端获得数据的。
 
 
3.ServerVariables集合
  
  ServerVariables集合可以取得服务器的环境变量(Server Enviroment Variables),
语法:
  Request.ServerVariables(环境变量名)
 
  该集合中包含的变量名有很多,下面列举一下主要的,更多的可以搜索引擎查:
 
All_Http
客户端发送的所有HTTP标头,前缀HTTP_
 
All_Raw
客户端发送的所有HTTP标头,其结果和客户端发送时一样,没有前缀HTTP_
 
Http_Referer
请求的字符串内容,包含客户端超链接的Internet地址
 
Http_User_Agent
客户端浏览器的类型
 
Login_User
用户登录 Windows NT的帐号
 
Path_Translated
获得ASP物理路径,并可进行虚拟路径到物理路径的映射
 
Query_String
获得Querystring,包括“?”后的所有内容
 
Request_Method
用于提出请求的方法,相当于用于HTTP的Get、Head、Post等
 
Script_Name
被执行脚本的完整虚拟路径
 
Server_Name
返回WEB服务器的主机名、DNS别名或者IP地址
 
Remote_Addr
发出请求的远程IP地址
 
Url
返回服务器地址
 
Server_Port
接受请求的服务器端口号
  
Path_Info
客户端提供的路径信息
 
Appl_MD_Path
应用程序的元数据库路径
 
Appl_Physical_Path
与应用程序元数据库路径相应的物理路径
 
Remote_Host
发出请求的远程主机名称
 
Local_Addr
返回接受请求的服务器地址
 
Http_Host
返回服务器地址
 
Server_Port_Secure
如果接受请求的服务器端口为安全端口时,则为1,否则为0
 
Server_Protocol
服务器使用的协议的名称和版本
 
Server_Software
应答请求并运行网关的服务器软件的名称和版本
 
Content_Length
客户端发出内容的长度
 
Https
如果请求穿过安全通道(SSL),则返回ON如果请求来自非安全通道,则返回OFF
 
Instance_ID
IIS实例的ID号
 
Instance_Meta_Path
响应请求的IIS实例的元数据库路径
 
Http_Cookie
返回Cookies的值
 
Https_Keysize
安全套接字层连接关键字的位数,如128
 
Https_Secretkeysize
服务器验证私人关键字的位数如1024
 
Https_Server_Issuer
服务器证书的发行者字段
 
Https_Server_Subject
服务器证书的主题字段
 
Auth_Password
当使用基本验证模式时,客户在密码对话框中输入的密码
 
Auth_Type
是用户访问受保护的脚本时,服务器用於检验用户的验证方法
 
Auth_User
代证的用户名
 
Cert_Cookie
唯一的客户证书ID号
 
Cert_Flag
客户证书标志,如有客户端证书,则bit0为0如果客户端证书验证无效,bit1被设置为1
 
Cert_Issuer
用户证书中的发行者字段
 
Cert_Keysize
安全套接字层连接关键字的位数,如128
 
Cert_Secretkeysize
服务器验证私人关键字的位数如1024
 
Cert_Serialnumber
客户证书的序列号字段
 
Cert_Server_Issuer
服务器证书的发行者字段
 
Cert_Server_Subject
服务器证书的主题字段
 
Cert_Subject
客户端证书的主题字段
 
Content_Type
客户发送的form内容或HTTPPUT的数据类型
 
 
  下面的例子演示使用Request.ServerVariables获得指定服务器的环境变量:
 
<%
Response.Write       “all_http:    ” &_
         Request.ServerVariables(“all_http”) & “<br />”&_
         “http_referer:    ” &_
         Request.Servervariables(“http_referer”) & “<br />”&_
         “http_user_agent:    ” &_
         Request.Servervariables(“http_user_agent”) & “<br />”&_
         “login_user:    ” &_
         Request.Servervariables(“login_user”) & “<br />”&_
         “path_translated:    ” &_
         Request.Servervariables(“path_translated”) & “<br />”&_
         “query_string:    ” &_
         Request.Servervariables(“query_string”) & “<br />”&_
         “request_method:    ” &_
         Request.Servervariables(“request_method”) & “<br />”&_
         “script_name:    ” &_
         Request.Servervariables(“script_name”) & “<br />”&_
         “server_name:    ” &_
         Request.Servervariables(“server_name”) & “<br />”&_
         “remote_addr:    ” &_
         Request.Servervariables(“remote_addr”) & “<br />”
 
 
%>
 
  运行后的结果如下:
 
all_http: HTTP_ACCEPT:image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* HTTP_ACCEPT_LANGUAGE:zh-cn HTTP_CONNECTION:Keep-Alive HTTP_HOST:localhost HTTP_USER_AGENT:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.3; .NET4.0C) HTTP_ACCEPT_ENCODING:gzip, deflate
http_referer:
http_user_agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.3; .NET4.0C)
login_user:
path_translated: C:inetpubwwwrootservervariables.asp
query_string:
request_method: GET
script_name: /servervariables.asp
server_name: localhost
remote_addr: 127.0.0.1
 
  可以看到用Response.Writes输出的变量的值。除了例子中用到的变量以外可以尝试更多的环境变量。这些变量反映了Asp程序运行环境的各种信息,也是经常要用到的。
 
 
 
ClientCertificate集合
 
  ClientCertificate 集合从 Web 浏览器发布请求中获取验证字段,如果 Web 浏览器使用 SSL3.0/PCT1 协议(也就是说,它使用以 https:// 开头的 URL,而不是 http://)连接服务器及服务器请求验证,则浏览器将发送验证字段。
如果没有发送验证,ClientCertificate 集合将返回 EMPTY。
必须先将 Web 服务器配置为要求客户端验证,然后才能使用 ClientCertificate 集合。
有关ClientCertificate集合更多的细节和语法可以参阅附件。
https://www.mazhiyuan.com/wp-content/uploads/2011/05/aspobject.htm

极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Request对象
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. Response.Write(“您的兴趣爱好:” & Request.Form(“爱好”) & “”)爱好是个多选按钮,包含多个,怎么输出其中的一个值?
    银小宝2015-04-08 16:43 Reply