第3章 ASP内置对象

3.1 Request对象

Request对象用于接受所有从浏览器发往服务器的请求中的所有信息。它可以读取任何基于HTTP请求传递的信息,包括从HTML表格用post或get方法传递的参数,用Cookie、用户认证传递的参数及文件上载。

语法格式:Request.集合(变量)

以下介绍该对象的几个常用集合的用法。

3.1.1 Form集合

Form集合是标准HTML的一部分,用户可以利用表单中的文本框、复选框、单选按钮、列表框等控件输入初始数据,然后通过单击表单中的命令按钮向服务器提交输入的数据。

语法格式:Request.Form(element名)[(index)|.Count]

其中各参数的意义如下。

(1)element:指定集合要检索的表格元素的名称。

(2)index:可选参数,使用该参数可以访问某参数中多个值中的一个。

(3)Count:集合中元素的个数。注意当表单以Get方式发送数据时,Count不能计数。

【例3.1.1】下面是一个输入个人信息的实例。

3-1-1. asp程序代码如下:

3-1-1_1. asp程序代码如下:

程序的输入界面如图3.1.1所示,单击‘提交’按钮后结果如图3.1.2所示。

图3.1.1 Form集合应用实例

图3.1.2 林宏个人资料

3.1.2 QueryString集合

QueryString集合是利用QueryString环境变量来获取客户请求字符串。

语法格式:Request.QueryString(variable)[(index)|.count]

其中各参数的意义如下。

(1)variable:是字符串变量名。

(2)index:可选参数,使用该参数可以访问某参数中多个值中的一个。

(3)count:用以确定参数的个数。如,Request.QueryString("ID").count。

其中,index是一个任选的参数,可以取得?后变量名,而且在?之后还可以用符号&来链接两个不同的参数,如:http://asp/query.asp?Y=yes&N=no。

通常这个HTTP查询字符串变量直接定义在超级链接的URL中,即接在?字符之后,代码格式如下:

服务器端可通过访问Request.QueryString集合来取得URL串中接在“?”字符之后的信息。

例如:用户发送http://asp/query.asp?ID=1&ID=2&Name=Tom

如果使用Request.QueryString("Name"),可得到Tom

如果使用Request.QueryString("ID"),可得到1,2

如果使用Request.QueryString("ID").Count,可得到2

如果使用Request.QueryString.Count,可得到2

【例3.1.2】QueryString应用实例。

3-1-2. asp程序代码如下:

3-1-2_1. asp程序代码如下:

3-1-2. asp程序的输入界面如图3.1.3所示;单击王小明后结果如图3.1.4所示。

图3.1.3 QueryString应用实例图

图3.1.4 王小明好友资料

3.1.3 Cookies集合

Request提供的Cookies集合允许用户检索在HTTP请求中发送的Cookie值。这项功能经常被使用在要求认证用户密码以及电子公告板、Web聊天室等ASP程序中。当用户访问Web站点时,它会在访问者的硬盘上留下一个标记,下一次你访问同一个站点时,站点的页面会查找这个标记。每个Web站点都有自己的标记,标记的内容可以随时读取,但只能由该站点的页面完成。每个站点的Cookie与其他所有站点的Cookie存在同一文件夹中的不同文件内(可以在Windows目录下的Cookie文件夹中找到它们)。一个Cookie就是一个唯一标识客户的标记,Cookie可以包含在一个对话期或几个对话期之间某个Web站点的所有页面共享的信息,使用Cookie还可以在页面之间交换信息。

语法格式:Request.Cookies(Cookie名)[(key)|.attribute]

其中各参数的意义如下。

Cookie名:指定要检索的Cookie文件名。

key:用于从Cookie集合中检索子关键字的值。

attribute:指定Cookie的属性,可取Domain、EXpires、Path、HasKeys值。

3.1.4 ServerVariables集合

服务器环境变量集合ServerVariables用来获得服务器的环境变量参数信息。HTTP传输协议的标题文件中记录有客户端的信息,如客户端发送的所有HTTP标题文件、用户登录WindowsNT的账号、客户的IP地址、查询HTTP请求问号(?)后的信息等。这些服务器环境只读变量为服务器端需要根据不同的客户端信息做出不同反应带来方便。

语法格式:Request.ServerVariables(服务器环境变量)

其中各参数的意义如下。

ALL_HTTP包含有在表单HTTP_NAME:value下的非标准头标的完整列表。

ALL_RAW除了当它被接收的时候没有HTTP前缀和其他的格式,其他的和ALL_HT-TP一样。

APLL_MD_PATH包含有数据库的逻辑路径。

APLL_PHYSICAL_PATH包含有数据库的物理路径。

AUTH_PASSWORD如果使用最基本的身份验证时所输入的口令。

AUTH_TYPE使用的安全身份验证类型。

AUTH_USER已经通过身份验证的用户名。

CERT_COOKIE包含客户认证的唯一标识符。

CERT_FLAGS如果客户认证存在,则设置第一个标志位,如果Certificate Authority可信,则设置第二个标志位。

CERT_ISSUER客户认证发放机构。

CERT_KEYSIZE在SSL安全码中的位数。

CERT_SECRETKEYSIZE在服务器中的SSL安全码中的位数。

CERT_SERIALNUMBER客户认证的序列号。

CERT_SERVER_ISSUER发放服务器认证的Certificate Authority。

CERT_SERVER_SUBJECT服务器认证的Subject域。

CERT_SUBJECT客户认证的Subject域。

CONTENT_LENGTH访问者向服务器发出请求时报告的字节数。

CONTENT_TYPE请求的类型。

GATEWAY_INTERFACE以CGI/版本号形式给出的CGI版本。

HTTPS如果是一个安全请求,则包含字符串on,否则的话包含字符串off。

HTTPS_KEYSIZE在请求中使用的SSL的位数。

HTTPS_SECRETKEYSIZE在服务器端使用的位数。

HTTPS_SERVER_ISSUER服务器认证的Certificate Authority。

HTTPS_SERVER_SUBJECT服务器认证的Subject域。

INSTANCE_ID Web服务器的实例标识号。

INSTANCE_META_PATH该具体实例的元数据库路径。

LOCAL_ADDR服务器的IP地址。

LOGON_USER如果用户是在NT系统上登录的话,那么这个域中将包含有用户名。

PATH_INFO在域名根目录外的到被请求页面的路径。

PATH_TRANSLATED请求的物理路径。

QUERY_STRING通过使用GET方法提交的任何数据,或是通过一个链接中的问号后面的数据。

REMOTE_ADDR发出请求的机器的IP地址。

REMOTE_HOST如果存在,为请求者的转换名,否则,为包含这个IP地址的域。

REMOTE_USER访问者发送的用户名。

REQUEST_METHOD使用的REQUEST方法,即Post或是Get。

SCRIPT_NAME被请求的脚本的虚拟文件位置。

SERVER_NAME服务器主机名。

SERVER_PORT发送请求使用的端口号。

SERVER_PORT_SECURE如果请求是通过安全链接发送的,那么这个域中包含值1,否则的话包含0。

SERVER_PROTOCOL使用的协议的版本号,即HTTP/11。

SERVER_SOFTWARE在服务器上运行的Web服务器软件的名称和版本。

URL是被请求的页面的地址。