Request、Request.Form和Request.QueryString的区别

request本身是一个系统的静态对象,本身也可以作为数组调用,比如request("abc")就是获取request数组中键值"abc"对应的值,而这个数组又不是固定的,而是多个数组的集合,其中包含了(QueryString ,Form ,Cookies ,ClientCertificate,ServerVariables )这几个服务器变量数组的值,也就是说,通过request可以依次遍历这几个数组并返回对应的值,使用起来很是方便,一劳永逸。

而request.form这个request的成员函数就不是那么宽泛的取值了,仅仅是从form数组中取值,也就是页面表单<form>标签的输入单元(比如<input type=text >传递过来的值。那么通过form就无法获取链接字符串中以index.asp?abc=123这样的形式传递过来的参数了。

还有一种方法是request.QueryString("abc")这种形式,可以获取QueryString 链接字符串传递的参数了。

以http的几种传递数据机制来说,这三种方法可以这样区分。request.form可以获取以post方式提交的数据,requst.querystring可以获取以get方法提交的数据,而request则是可以同时获取两种方法传递的数据。

按照传递数据量来说,request.form可以传递不限大小的数据,而request.querystring只能传递2k的数据量。

按照速度来说,request.qeurystring 会略快于request.form

最方便最好用的嘛,request本身来的直接了,不管怎么传递的数据都能获取,性能嘛,略有下降,可忽略不计,通用的可以使用 request("abc")这样的写法。

Request.Form:获取以POST方式提交的数据(接收Form提交来的数据);

Request.QueryString:获取地址栏参数(以GET方式提交的数据)

Request:包含以上两种方式(优先获取GET方式提交的数据),它会在QueryString、Form、ServerVariable中都搜寻一遍。

而且有时候也会得到不同的结果。如果你仅仅是需要Form中的一个数据,但是你使用了Request而不是Request.Form,那么程序将在QueryString、ServerVariable中也搜寻一遍。如果正好你的QueryString或者ServerVariable里面也有同名的项,你得到的就不是你原本想要的值了。

Request.ServerVariables中的各种参数

Request.ServerVariables("Url") 
返回服务器地址

Request.ServerVariables("Path_Info") 
客户端提供的路径信息

Request.ServerVariables("Appl_Physical_Path") 
与应用程序元数据库路径相应的物理路径

Request.ServerVariables("Path_Translated") 
通过由虚拟至物理的映射后得到的路径

Request.ServerVariables("Script_Name") 
执行脚本的名称

Request.ServerVariables("Query_String") 
查询字符串內容

Request.ServerVariables("Http_Referer") 
请求的字符串內容

Request.ServerVariables("Server_Port") 
接受请求的服务器端口号

Request.ServerVariables("Remote_Addr") 
发出请求的远程主机的IP地址

Request.ServerVariables("Remote_Host") 
发出请求的远程主机名称

Request.ServerVariables("Local_Addr") 
返回接受请求的服务器地址

Request.ServerVariables("Http_Host") 
返回服务器地址

Request.ServerVariables("Server_Name") 
服务器的主机名、DNS地址或IP地址

Request.ServerVariables("Request_Method") 
提出请求的方法比如GET、HEAD、POST等等

Request.ServerVariables("Server_Port_Secure")
如果接受请求的服务器端口为安全端口时,则为1,否则为0

Request.ServerVariables("Server_Protocol")
服务器使用的协议的名称和版本

Request.ServerVariables("Server_Software")
应答请求并运行网关的服务器软件的名称和版本

Request.ServerVariables("All_Http")
客户端发送的所有HTTP标头,前缀HTTP_

Request.ServerVariables("All_Raw")
客户端发送的所有HTTP标头,其结果和客户端发送时一样,没有前缀HTTP_

Request.ServerVariables("Appl_MD_Path")
应用程序的元数据库路径

Request.ServerVariables("Content_Length")
客户端发出內容的长度

Request.ServerVariables("Https")
如果请求穿过安全通道(SSL),则返回ON如果请求来自非安全通道,则返回OFF

Request.ServerVariables("Instance_ID")
IIS实例的ID号

Request.ServerVariables("Instance_Meta_Path")
响应请求的IIS实例的元数据库路径

Request.ServerVariables("Http_Accept_Encoding")
返回內容如:gzip,deflate

Request.ServerVariables("Http_Accept_Language")
返回內容如:en-us

Request.ServerVariables("Http_Connection")
返回內容:Keep-Alive

Request.ServerVariables("Http_Cookie")
返回內容如:nVisiT%

2DYum=125;ASPSESSIONIDCARTQTRA=FDOBFFABJGOECBBKHKGPFIJI;ASPSESSIONIDCAQQTSRB=LKJJPLABABILLPCOGJGAMKAM;ASPSESSIONIDACRRSSRA=DK

HHHFBBJOJCCONPPHLKGHPB

Request.ServerVariables("Http_User_Agent")
返回內容:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)

Request.ServerVariables("Https_Keysize")
安全套接字层连接关键字的位数,如128

Request.ServerVariables("Https_Secretkeysize")
服务器验证私人关键字的位数如1024

Request.ServerVariables("Https_Server_Issuer")
服务器证书的发行者字段

Request.ServerVariables("Https_Server_Subject")
服务器证书的主题字段

Request.ServerVariables("Auth_Password")
当使用基本验证模式时,客户在密码对话框中输入的密码

Request.ServerVariables("Auth_Type")
是用户访问受保护的脚本时,服务器用於检验用户的验证方法

Request.ServerVariables("Auth_User")
代证的用户名

Request.ServerVariables("Cert_Cookie")
唯一的客户证书ID号

Request.ServerVariables("Cert_Flag")
客户证书标誌,如有客户端证书,则bit0为0如果客户端证书验证无效,bit1被设置为1

Request.ServerVariables("Cert_Issuer")
用户证书中的发行者字段

Request.ServerVariables("Cert_Keysize")
安全套接字层连接关键字的位数,如128

Request.ServerVariables("Cert_Secretkeysize")
服务器验证私人关键字的位数如1024

Request.ServerVariables("Cert_Serialnumber")
客户证书的序列号字段

Request.ServerVariables("Cert_Server_Issuer")
服务器证书的发行者字段

Request.ServerVariables("Cert_Server_Subject")
服务器证书的主题字段

Request.ServerVariables("Cert_Subject")
客户端证书的主题字段

Request.ServerVariables("Content_Type")
客户发送的form內容或HTTPPUT的数据类型

在.net学习开发中,基础比较重要。现在我将一些最基础的.net知识一点点总结,温故知新。

我们在网页开发的过程中要接受来自页面传来的值,这也是我们要了解的基础内容。
使用Request.Form,ASP是从FORM集合中搜索。
使用Request,ASP是以如下顺序进行搜索:
     1.QueryString
     2.Form
     3.Cookies
     4.ClientCertificate
     5.ServerVariables
如果在QueryString里也存在一个同Form里相同的变量名,则不会返回Form里的值,而是QueryString的。

Request.form:获取前台form表单以POST方式提交的数据
      Request.QueryString :获取地址栏参数(以GET方式提交的数据)
      Request:包含以上两种方式(优先获取GET方式提交的数据)

两者除了接收方法不同外,还有传递数据量大小的问题:

Request.form方法能接收的数据没有限制,而Request.QueryString只能接收数据量小于2KB数据,当然后者的执行速度要比前者快。
一般向数据库请求查询时用request.QueryString方法,因为查询时只不过那么几个关键词,没有必要用request.form方法而导致查询速度变慢。
另外,request.QueryString方法还会把数据信息显示在客户端浏览器地址栏中,安全性较差。
request.form方法不存在上述问题,因此大量被应用在多个文本域提交数据和用户登陆的场合。
request对象也可以不指明具体使用QueryString或是form方法,如request("变量"),因为它能自动识别,
不过还是指明为好,否则,要它自己判断也得花些微小的访问时间,影响程序执行效率。

[转载]Request、Request.Form和Request.QueryString的区别的更多相关文章

  1. 客户端的数据来源:QueryString, Form, Cookie Request[]与Request.Params[]

    在ASP.NET编程中,有三个比较常见的来自于客户端的数据来源:QueryString, Form, Cookie . 我们可以在HttpRequest中访问这三大对象. QueryString: 获 ...

  2. request和request.form和request.querystring的区别

    asp中获取传递的参数,一般用request或者用request成员函数request.form,两种方式都可以获取页面表单传递过来的参数值,一直没留意两种方法有什么区别,我一般喜欢用request( ...

  3. Request.params,Request.form,Request.querystring区别(转)

    自己总结:---大致意思是: 1.传参的方式分为:get方式传参,post方式传参,request.cookies和request.servervariables 2.这几种获取参数方式获取的都是一个 ...

  4. C# Request.Params与Request.QueryString 的区别

    1.Request.Params包含Request.QueryString,request.form.request.cookies和request.servervariables.这几种查找的时候会 ...

  5. 说说Request.Params[key]和Request[key]

    摘要 其实你一看到,就应该会想到,这个不简单吗,不就是服务端接收参数的一种方式吗?是的.在asp.net编程中,QueryString.Form.Cookie是三种比较常见的接收客户端参数的方式.Qu ...

  6. Request的getParameter和getAttribute方法的区别

    下面整理一下getParameter和getAttribute的区别和各自的使用范围.      (1)HttpServletRequest类有setAttribute()方法,而没有setParam ...

  7. <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>

    <%String path = request.getContextPath();String basePath = request.getScheme()+"://"+re ...

  8. 关于String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

    关于 String path = request.getContextPath(); String basePath = request.getScheme()+"://"+req ...

  9. String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";作用!!!!!

    <%String path = request.getContextPath();String basePath = request.getScheme()+"://"+re ...

随机推荐

  1. Sql server 2016 Always On 搭建Windows集群配置

    .安装WSFC群集组件 1)打开服务器管理器,选择“功能”,在右边窗口中点击“添加功能”. 2)在添加功能向导中,勾选“故障转移群集”,点击“下一步”. 3)在“确认安装选择”页面中,点击“安装”,进 ...

  2. chkdsk 命令对Raid盘检测和查错、修复

    C:\Documents and Settings\Administrator>chkdsk /?检查磁盘并显示状态报告. CHKDSK [volume[[path]filename]]] [/ ...

  3. python 调用阿里云云解析api添加记录

    首先安装阿里云SDK pip install aliyun-python-sdk-core pip install aliyun-python-sdk-alidns 可以配合jenkins传递参数 # ...

  4. 项目发布脚本-nodejs

    #!/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin clear printf &q ...

  5. yum 安装报错 File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:

    原因: 这是因为yum采用python作为命令解释器,这可以从/usr/bin/yum文件中第一行#!/usr/bin/python发现.而python版本之间兼容性不太好,使得2.X版本与3.0版本 ...

  6. [LeetCode] 153. Find Minimum in Rotated Sorted Array_Medium tag: Binary Search

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  7. 石子合并(区间DP经典例题)

    题目链接:https://www.luogu.org/problemnew/show/P1880 #include <cstdio> #include <cmath> #inc ...

  8. iOS 开发笔记-控制器tab切换view显示

    在开发过程中,我们常常会碰到一种情况就是,在一个controller里面,经常要放很多复杂的控制,最常用的就是tar切换.tar切换,原理就是在一个controller里面,显示另一个controll ...

  9. 从零开始一起学习SLAM | C++新特性要不要学?

    LAM,C++编程是必备技能.不过,大家在学校里学习的书本一般比较老,主要还是C++98那些老一套. 本文所谓的C++新特性是指C++11及其以后的C++14.C++17增加的新关键字和新语法特性.其 ...

  10. 【cocos2d-js官方文档】事件分发监听机制(摘录)

    简介 游戏开发中一个很重要的功能就是交互,如果没有与用户的交互,那么游戏将变成动画,而处理用户交互就需要使用事件监听器了. 总概: 事件监听器(cc.EventListener) 封装用户的事件处理逻 ...