6.3.2 Request对象
Request对象用来读取从客户端浏览器发送到服务器的数据。
例如,服务器经常需要获得客户端输入的信息,如常见的注册、登录、留言等,用户把相应的信息填写在表单中,然后“提交”表单,这时就需要使用Request对象获取表单中的信息。Request对象的常用方法和属性如表6-10所示。
表6-10 Request对象的常用方法
1. 使用Request.Form 获取表单中的数据
Form是Request对象最常用的方法之一,它用来获取客户端在表单中所输入的信息,请看一个简单的获取用户登录时用户名和密码的例子。
------------------------清单6-12 6-12.asp------------------------
<HTML>
<HEAD>
<TITLE> 登录页 </TITLE>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="6-13.asp">
用户名:<INPUT NAME="userName" TYPE="text" size="10">
密 码:<INPUT NAME="Pass" TYPE="password" size="10">
<INPUT TYPE="submit" value="登录">
</FORM>
</BODY>
</HTML>
-------------------------清单6-13 6-13.asp-----------------------
<HTML>
<HEAD>
<TITLE>获取页</TITLE>
</HEAD>
<BODY>
<%
dim userName,PS
userName=request.form("userName")
PS=request.form("Pass")
Response.write "你输入的用户名是:"&userName
Response.write"<br>你输入的密码是:"&PS
%>
</BODY>
</HTML>
--------------------------------------------------------------------
程序执行结果如图6-19所示。
在这里,6-12.asp用来显示表单,表单标签form的Action属性值为6-13.asp执行结果,表示用户填写登录信息并点击“登录”按钮会转到6-13.asp网页执行;表单的两个文本字段的Name属性项的值为userName和Pass,为方便在6-13.asp中获取它的值而做好准备工作。6-13.asp用来获取用户输入的值并显示出来,用request.form("userName")和request.form("Pass")获取两个文本字段的值,然后输出获得的值,也就是在图6-20中所看到的结果。
图6-19 6-12.asp执行结果
图6-20 6-13.asp执行结果
既可以在Action属性拟定的另一张网页来读取表单中的信息,也可以在表单所在网页中来读取此信息,下面使用一张网页来实现上例中的效果。
--------------------------清单6-14 6-14.asp-------------------------
<HTML>
<HEAD>
<TITLE>用一张网页实现交互</TITLE>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="">
用户名:<INPUT NAME="userName" TYPE="text" size="10">密码:<INPUT NAME="Pass" TYPE="password" size="10">
<INPUT TYPE="submit" value="登录">
</FORM>
<%
if request.form("userName")<>"" and request.form("Pass")<>"" then
dim userName,PS
userName=request.form("userName")
PS=request.form("Pass")
Response.write "你输入的用户名是:"&userName
Response.write"<br>你输入的密码是:"&PS
end if
%>
</BODY>
</HTML>
--------------------------------------------------------------------
执行结果如图6-21所示。
这个例子中,<% if request.form("userName")<>"" and request.form("Pass")<>"" then %>这个条件语句表示,如果用户在用户名和密码框中都输入了内容,就执行这个条件语句中的内容:获取信息和显示信息。在第一次打开此页面时,用户名和密码框中都没有内容不会执行条件中的内容,只会显示表单的内容。
图6-21 6-14.asp执行结果
2. 使用Request.QueryString 获取URL变量
当网页通过超链接或者其他方式从一张网页转到另一张网页的时候,往往需要在转跳的同时把一些数据传递到第二张网页中,可以把这些数据附加在超链接URL的后面,在第二张网页中使用Request.Querystring方法来获取URL后变量的值。例如,
<a href="7-5.asp?Id=张三&page=2">张三的信息</a>
此超链接中含有两个URL变量,Id 和 page,变量参数之间用&连接。请看如下的例子。
--------------------------清单6-15 6-15.asp ------------------------
<HTML>
<HEAD>
<TITLE>传送URL变量 </TITLE>
</HEAD>
<BODY>
<a href="6-16.asp?Id=李四&page=3">李四的情况(链接)</a>
</BODY>
</HTML>
-------------------------清单6-16 6-16.asp -------------------------
<HTML>
<HEAD>
<TITLE> 获取URL变量 </TITLE>
</HEAD>
<BODY>
<%
Dim id,page
id=request.querystring("id")
page=request.querystring("page")
Response.write "id="&id&"<br>page="&page
%>
</BODY>
</HTML>
--------------------------------------------------------------------
执行结果如图6-22所示。
图6-22 6-15.asp的执行结果
在程序6-15.asp中,直接将“李四”和“3”的信息传送到6-16.asp,但实际应用时,经常使用变量来传送。6-15.asp可以改写成6-15-2.asp:
------------------------清单6-15-2 6-15-2.asp -----------------------
<HTML>
<HEAD>
<TITLE>传送URL变量 </TITLE>
</HEAD>
<BODY>
<%
name="李四"
page=3
%>
<a href="6-16.asp?Id=<%=name%>&page=<%=page%>">李四的情况(链接)</a>
</BODY>
</HTML>
--------------------------------------------------------------------
这与6-15.asp具有相同的作用,其中<%=name%>是<%Response.write name%>的一种简写方法,作用完全相同。
3. 使用Request.ServerVariables 获取环境变量信息
有时需要获取服务器端或客户端的某些特定信息,比如获取客户端的IP地址、客户端浏览器所发出的所有HTTP标题文件等,可以使用Request对象的ServerVariables方法方便地取得这些信息。使用此方法的语法如下:Request.ServerVariables("环境变量名")常用的环境变量名如表6-11所示。
表6-11 常用的环境变量
续表
下面使用Request. ServerVariables方法来获取客户机的IP地址和当前ASP文件的虚拟路径。
-------------------------清单6-17 6-17.asp -------------------------
<HTML>
<HEAD>
<TITLE> 使用ServerVariables方法获取IP地址和虚拟路径</TITLE>
</HEAD>
<BODY>
<%
Dim ip,path
ip=Request.ServerVariables("REMOTE_ADDR")
path=Request.ServerVariables("SCRIPT_NAME")
response.write"您的IP是:"&ip
response.write"<br>当前ASP文件的虚拟路径是:"&path
%>
</BODY>
</HTML>
--------------------------------------------------------------------
执行结果如图6-23所示。
图6-23 6-17.asp调试结果
4. 使用Request.cookies获取得客户端浏览器的信息
当Response对象设置好cookies数据集合里的各项数据项之后,就可以通过Request.cookies对象获得这些数据项的内容。
使用格式如下:
Request.cookies(cookies名称)[(key)|.attribute]
cookies的应用实例如下。
---------------------------清单6-18 6-18.asp------------------------
<%
Response.cookies("user")("name")="李四"
Response.cookies("user")("pwd")="1234"
a= request.cookies("user")("name")
b= request.cookies("user")("pwd")
Response.write a&b
%>
--------------------------------------------------------------------
执行结果如图6-24所示。
图6-24 6-18.asp调试结果
下面举一个cookies的综合实例。
--------------------------清单6-19 6-19.asp------------------------
<html>
<head>
<title>Cookies综合示例</title>
</head>
<body>
<%if Request.cookies("UserName")<>"" then
Response.write"欢迎您:"&request.Cookies("UserName")
else
%>
<table width="98%" height="30" border="0" cellpadding="0"
cellspacing="1" bgcolor="#666666">
<tr bgcolor="#CCCCCC">
<td>
<form name="form1" method="post" action="">
请输入: 用户名:
<input name="UserName" type="text" id="UserName" size="12">
电子邮件:
<input name="Email" type="text" id="Email" size="12">
保存时间:
<select name="Save" id="Save">
<option value="1">保存1天</option>
<option value="7">保存1周</option>
<option value="30">保存1月</option>
</select>
<input type="submit" name="Submit" value="确定">
</form>
</td>
</tr>
</table>
<%
if request.Form("UserName")<>"" and request.Form("Email")<>"" then
Response.cookies("UserName")=Request.Form("UserName")
Response.cookies("Email")=Request.Form("Email")
Response.cookies("UserName").Expires=date()+Cint(request.
form("Save"))
'设置有效期
Response.cookies("Email").Expires=date()+Cint(request.
form("Save"))
Response.redirect("6-19.asp")'相当于刷新本页
Response.end
end if
end if
%>
</body>
</html>
--------------------------------------------------------------------
执行结果如图6-25所示。
图6-25 6-19.asp的调试结果
本例综合应用了Response对象、Request对象的方法,以及HTML表单form。表单form提供用户输入信息的界面,request.form方法用于获取浏览器里的表单信息,Response.cookies用于将信息写入客户端cookies,request.cookies获取客户端已存的cookies信息,response.write则用于在客户端浏览器里显示信息。
注意:本例中有2段asp代码,第一段<% %>里有一个if语句;第二段<% %>开头部分也有一个if语句,后面有2个end if,这2个end if分别与前面2个if匹配(尽管有一个if不在第二段asp代码里,而是在第一段asp代码里)。这就是说,虽然这2段asp代码在形式上被一些HTML代码隔离了,但作为asp程序,这2段代码在逻辑上并没有被隔开,而是“前后相邻”的。在以后编辑asp文件时,会经常这样使用,值得大家注意。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。