zoukankan      html  css  js  c++  java
  • request和request.form和request.querystring的区别

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

    最近修改了一些kingcms的代码,其中有一段代码是用request.form("abc")这样的形式获取传递的参数,可我在地址栏输入传递的参数无论如何也无法通过这段代码获取,仔细看了一下,才发现,是由于request和request.form的不同机制造成的。

    首先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")这样的写法

    总结;

    1.Request.form方法,它是用来接收表单变量的(post 方法)

    2.Request.QueryString方法, 它是接收URL参数的 (get 方法)

    3.Request对象也可以不指明具体使用QueryString或是form方法,如request("变量"),因为它能自动识别,不过还是指明为好,否则,要它自己判断也得花些微时间,影响程序执行效率。Request:包含以上两种方式(优先获取GET方式提交的数据),它会在QueryString、Form、ServerVariable中都搜寻一遍。

    两者除了接收方法不同外,还有传递数据量大小的问题,request.form方法能接收的数据没有限制,而request.QueryString只能接收数据量小于2KB数据,当然后者的执行速度要比前者快。一般往数据库请求查询时用request.QueryString方法,因为查询时只不过那么几个关键词,没有必要用request.form方法而导致查询速度变慢。另外,request.QueryString方法还会把数据信息显示在客户端浏览器地址栏中,安全性较差。 request.form方法不存在上述问题,因此大量被应用在多个文本域提交数据和用户登陆的场合

    寻找21世纪的伯牙
  • 相关阅读:
    1.8其他命令
    1.7远程管理常用命令
    1.6.系统信息相关命令
    1.5linux用户权限相关命令
    python 进程创建和共享内容的方法
    python 操作数据库
    python 类方法中参数使用默认值的方法
    异常处理
    推导列表
    装饰器 装饰带参数的函数和添加函数
  • 原文地址:https://www.cnblogs.com/2814/p/2848760.html
Copyright © 2011-2022 走看看