您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

总结Asp.net内置对象之Request对象使用实例

2025/4/6 0:03:34发布58次查看
request对象主要用于获取来自客户端的数据,如用户填入表单的数据、保存在客户端的cookie等,本文将围绕request对象,讲解其的主要作用:读取窗体变量、读取查询字符串变量、取得web服务器端的系统信息。取得客户端浏览器信息等等,感兴趣的朋友可以了解下
前言:
request对象主要用于获取来自客户端的数据,如用户填入表单的数据、保存在客户端的cookie等。
一、request对象概述
1、主要属性
 applicationpath  获取服务器上asp.net应用程序的虚拟应用程序根路径
 browser  获取有关正在请求的客户端的浏览器功能的信息,该属性值为:httpbrowsercapabilities对  象
 contentencoding  获取或设置实体主体的字符集。该属性值为表示客户端的字符集encoding对象
 contentlength  指定客户端发送的内容长度,以字节为单位 
 contenttype  获取或设置传入请求的mime内容类型。
 cookies  获取客户端发送的cookie集合,该属性值为表示客户端的cookie变量的  httpcookiecollection对象
 currentexecutionfilepath  获取当前请求的虚拟路径
 filepath  获取当前请求的虚拟路径
 files  获取客户端上载的文件集合。该属性值为httpfilecollection对象,表示客户端上载的文件集合
 form  获取窗体变量集合
 httpmethod  获取客户端使用的http数据传输方法(如:get、post或head)
 item  获取cookies、form、querystring或servervariables集合中指定的对象
 params  获取cookies、form、querystring或servervariables项的组合集合
 path  获取当前请求的虚拟路径
 pathinfo  获取具有url扩展名的资源的附加路径信息
 physicalapplicationpath  获取当前正在执行的服务器应用程序的根目录的物理文件系统路径
 physicalpath  获取与请求的url相对应的物理文件路径
 querystring  获取http查询字符串变量集合。该属性值为:namevaluecollection对象,它包含由客户端发送的查询字符串变量集合
 requesttype  获取或设置客户端使用http数据传输的方式(get或post)
 servervariables  获取web服务器变量的集合
 totalbytes  获取当前输入流的字节数
 url  获取有关当前请求url的信息
 userhostaddress  获取远程客户端的ip主机地址
2、主要方法
(1)mappath(virtualpath):将当前请求的url中的虚拟路径virtualpath映射到服务器上的物理路径。参数virtualpath指定当前请求的虚拟路径,可以是绝对路径或相对路径。该方法的返回值为由virtualpath指定的服务器物理路径。
(2)saveas (filename,includeheaders):将http请求保存到磁盘。参数filename指定物理驱动器路径,includeheaders是一个布尔值,指定是否应将http标头保存到磁盘。
二、request对象的应用
1.读取窗体变量四种方式:
(1).使用request.form属性读取窗体变量
(2).使用request.querystring属性读取窗体变量
(3).使用request.params属性读取窗体变量
(4).通过服务器控件的属性直接读取窗体变量
(1).使用request.form属性读取窗体变量
htmlform控件的method属性的默认值为post。在这种情况下,当用户提交网页时,表单数据将以http标头的形式发送到服务器端。此时,可以使用request对象的form属性来读取窗体变量。如:txtusername和txtpassword的文本框控件,则可以通过以下形式来读取它们的值: request.form[txtusername] ;request.form[txtpassword]
(2)使用request.querystring属性读取窗体变量
如果将htmlform控件的method属性设置为get,则当用户提交网页时,表单数据将附加在网址后面发送到服务器端。在这种情况下,可以使用request对象的querystring属性读取窗体变量。request.querystring[txtusername] ;request.querystring[txtpassword]
(3)使用request.params属性读取窗体变量
不论htmlform控件的method属性取什么值,都可以使用request对象的params属性来读取窗体变量的内容,如request.params[txtpassword]或者request.[txtpassword],优先获取get方式提交的数据,它会在querystring、form、servervariable中都按先后顺序搜寻一遍。
request:包含以上两种方式(优先获取get方式提交的数据),它会在querystring、form、servervariable中都按先后顺序搜寻一遍。request.params是所有post和get传过来的值的集合,request.params其实是一个集合,它依次包括request.querystring、request.form、request.cookies和request.servervariable。
注意:当使用request.params的时候,这些集合项中最好不要有同名项。如果仅仅是需要form中的一个数据,但却使用了request而不是request.form,那么程序将在querystring、servervariable中也搜寻一遍。如果正好querystring或者servervariable里面也有同名的项,那么得到的就不是想要的值了。
(4)通过服务器控件的属性直接读取窗体变量
除了以上3种方式之外,也可以通过服务器控件的属性来直接读取窗体变量,这是获取表单数据的最常用、最简单的方式。例如: txtusername.text 
2.读取查询字符串变量
在浏览网页时,经常看到浏览器地址栏中显示“xxx.aspx?id=8018”之类的url,其中xxx.aspx表示要访问的.aspx网页,问号(?)后面跟的内容便是查询字符串,其作用是将变量的名称和值传送给这个asp.net文件来处理。查询字符串变量可以通过以下几种方式生成。
(1).若将htmlform控件的method属性设置为get,则当用户提交网页时,窗体数据将作为查询字符串变量附在网址后面被发送到服务器端。
(2).使用3499910bf9dac5ae3c52d5ede7383485…5db79b134e9f6b82c0b36e0489ee08ed标记或hyperlink控件创建超文本链接时,可以将查询字符串放在目标url后面,并使用问号“?”来分隔url与查询字符串
(3).调用response.redirect方法时,若在网址参数后面附有变量名/值对,则打开目标网页时这些变量值附在该网址后面被发送到服务器端。
(4).在浏览器地址栏中输入请求url时,在url后输入问号“?”和查询字符串。例如: http://…/t.aspx?id=8018
在上述场合,均可通过request.querystring属性来检索查询字符串变量。
如下代码:
//在登陆页面 protected void button1_click(object sender, eventargs e) { //登陆 //if (txtusername.text == "admin" && txtpwd.text == "123") //{ // session["info"] = "随便一个值"; // response.redirect("request2_test.aspx?info=" + txtusername.text); //} //else //{ // response.redirect("request2_test.aspx?error=登陆失败!"); //} /***********************************方法2****************************************/ //或者 if (txtusername.text == "admin" && txtpwd.text == "123") { response.redirect("request2_test.aspx?info=" + txtusername.text + "&check=1"); } else { response.redirect("request2_test.aspx?error=登陆失败!"); } }
在验证页面
代码如下:
protected void page_load(object sender, eventargs e) { //验证页面 //if (session["info"] != null && session["info"].tostring() == "随便一个值") //{ // response.write("登陆成功!<br>" + request.querystring["info"] + ",欢迎访问本站"); // //response.write("登陆成功!<br>" + request["info"] + ",欢迎访问本站"); // //response.write("登录成功!<br>"+request.form["username"]+",欢迎访问本站"); //} //else //{ // response.write("登陆失败"); //} /***************************************方法2**********************************/ if (convert.toint32(request["check"]) == 1) { response.write("登陆成功!<br>" + request.querystring["info"] + ",欢迎访问本站"); } else { response.write("登陆失败"); } }
3.取得web服务器端的系统信息
request对象使用servervariables集合对象保存服务器端系统信息,这些信息变量包含在http头部中随http请求一起传送。使用request对象的servervariables集合对象取得环境变量的语法如下: request.servervariables[环境变量名]
servervariables集合对象中保存的常用信息变量如下:
代码如下:
response.write(request.servervariables["local_addr"]);//远端服务器的地址 response.write("<br>"); response.write(request.servervariables["remote_addr"]);//浏览器所在主机的ip地址 response.write("<br>"); response.write(request.browser.type.tostring());//浏览器的类型 response.write("<br>"); response.write(request.browser.platform.tostring());//浏览器所在的平台 response.write("<br>"); response.write(request.servervariables["url"]);
4.取得客户端浏览器信息
通过request对象的browser属性得到。需要利用browser属性生成一个httpbrowsercapabilities类型的对象实例。httpbrowsercapabilities类具有的常用属性如下:
代码如下:
response.write("浏览器的类型是:" + request.browser.browser.tostring()+"<br>"); response.write("浏览器的版本是:" + request.browser.version.tostring()+"<br>"); response.write("浏览器的所在平台是:" + request.browser.platform.tostring()+"<br>"); response.write("浏览器是否支持框架:" + request.browser.frames.tostring()+"<br>"); response.write("浏览器是否支持cookies:" + request.browser.cookies.tostring()+"<br>"); response.write("浏览器是否支持javascript:" + request.browser.javascript.tostring()+"<br>");
5.读取客户端cookie
cookie是在http协议下服务器或脚本可以维护客户工作站上信息的一种方式。cookie是由web服务器保存在用户浏览器上的小文本文件,它可以包含有关用户的信息,这些信息以名/值对的形式储存在文本文件中。无论何时,只要用户连接接到服务器,web站点就可以访问cookie信息。cookie保存在用户的cookie文件中,当下一次用户返回时,仍然可以对它进行调用。
cookies集合是由一些cookie对象组成的。cookie对象的类名为httpcookie。httpcookie类的主要属性如下:
使用cookie时,应注意以下几点
[1].使用cookie保存客户端浏览器请求服务器页面的请求信息时,保存时间的长短取决于cookie对象的expires属性,可以根据需要来设置。若未设置cookie的失效日期,则它们仅保存到关闭浏览器为止。若将cookie对象的expires属性设置为datetime.maxvalue,则表示cookie永远不会过期。
[2].cookie存储的数据量有所限制,大多数浏览器支持的最大容量为4096字节,因此不要用cookie来保存大量数据。
[3]. 并非所有浏览器都支持cookie,并且数据是以明文形式保存在客户端计算机中,因此最好不要用cookie来保存敏感的未加密数据。
[4].在asp.net中有两个cookies集合,即:response对象的cookies集合和request对象的cookies集合,但两者的作用有所不同,通过前者可以将cookie写入客户端,通过后者可以读取存储在客户端的cookie。
如下操作:
示例如下:
代码如下:
protected void page_load(object sender, eventargs e) { httpcookie c1=request.cookies["username"]; httpcookie c2 = request.cookies["password"]; if (c1 != null || c2 != null) { //当保存完cookie之后(也就是说"保存或永久保存"),这个才能输出,当第二次用统一浏览器打开该网站的时候就会输出 response.write(c1.value + "欢迎光临"); } } protected void button1_click(object sender, eventargs e) { //提交 if (textbox1.text == "admin" && textbox2.text == "123") { response.write("欢迎光临"+textbox1.text); response.cookies["username"].value = textbox1.text; response.cookies["password"].value = textbox2.text; if (dro pdo wn list 1.selecteditem.text == "永久保存") { //默认cookies失效时间是直到关闭浏览器 //cookie保存永久 response.cookies["username"].expires = datetime.maxvalue; response.cookies["password"].expires = datetime.maxvalue; } else { //cookie永不保存 response.cookies["username"].expires = datetime.now; response.cookies["password"].expires = datetime.now; } } }
当我们再次打开该网站(同一浏览器)的时候,就会弹出“admin欢迎光临
【相关推荐】
1. 谈谈request和response这两个对象的使用
2. 分享一个request对象小案例
3. 分享asp中request对象五个获取客户端资料的方法
4. 详解asp.net 系统对象之request
以上就是总结asp.net内置对象之request对象使用实例的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product