Asp.net内置对象之Request对象(概述及应用)

前言:
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).使用<a>…</a>标记或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 (DropDownList1.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欢迎光临"

(0)

相关推荐

  • JSP内置对象:Request和Response的简单介绍及使用

    JSP内置对象之request对象客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应.它是HttpServletRequest类的实例.序号 方 法 说 明 1 object getAttribute(String name) 返回指定属性的属性值 2 Enumeration getAttributeNames() 返回所有可用属性名的枚举 3 String getCharacterEncoding() 返回字符编码方式 4 int getContentLen

  • ASP.NET内置对象之Application对象

    新建一个网站,包括两个网页,代码如下: 1.Index.aspx代码:  复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Index.aspx.cs" Inherits="Index" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&

  • javascript 基础篇3 类,回调函数,内置对象,事件处理

    复制代码 代码如下: function 类名(参数表){ this.属性; ...... this.函数; } 这样,函数和数据成员都是用"this."来实现. 我们自己定义一个简单类student好了,然后再去构造它,并且实现一个输出函数. 复制代码 代码如下: <script LANGUAGE="JavaScript"> <!-- function student(a,b){ this.name = a; this.age=b; this.ou

  • Asp.net内置对象之Server对象(概述及应用)

    一.了解Server对象 Server对象提供对服务器上的方法和属性的访问以及进行HTML编码的功能.这些功能分别由Server对象相应的方法和属性完成. 二.Server对象的常用属性 (1).MachineName(2).ScriptTimeout:属性用于设置脚本程序执行的时间,适当地设置脚本程序的ScriptTimeout可以提高整个Web应用程序的效率.语法如下:Server.ScriptTimeout=time;(以s(秒)为单位) ScriptTimeout属性的最短时间默认为90

  • jsp内置对象及方法详细介绍

    jsp提供了的9个内置对象,下面jsp的9大内置对象方法说明 内置对象 类型 作用域 request javax.servlet.http.HttpServletRequest request response javax.servlet.http.HttpServletResponse response pageContext javax.servlet.jsp.PageContext page session javax.servlet.http.HtpSession session app

  • Asp.net内置对象之Cookies(简介/属性方法/基本操作及实例)

    一.了解Cookies对象 Cookies是由Web服务器管理的存放在客户计算机中的一个数据集合.这些数据是客户端.服务器端相关的.也就是说客户浏览器每登录一个网站,在Cookies中就会保存客户浏览器与该网站的相关信息.即使客户用同一个浏览器登陆了多个网站,在Cookies中依然会保存浏览器与多个网站的相关信息,但Cookies中这些信息的管理是有序的,当客户浏览器再次登录某网站时,只有Cookies中相对应的信息会发生作用. Cookies是Web应用程序设计的一项很重要的技术,当Web服务

  • javascript function、指针及内置对象

    函数是进行模块化程序设计的基础,编写复杂的Ajax应用程序,必须对函数有更深入的了解. javascript中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的.通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递.在继续讲述之前,先看一下函数的使用语法: 以下是引用片段: function func1(-){-} var func2=function(-){-}; var func3=function func4(-){-}; var func5=new

  • JavaScript 核心参考教程 内置对象

    这个标准基于 JavaScript (Netscape) 和 JScript (Microsoft).Netscape (Navigator 2.0) 的 Brendan Eich 发明了这门语言,从 1996 年开始,已经出现在所有的 Netscape 和 Microsoft 浏览器中.ECMA-262 的开发始于 1996 年,在 1997 年 7 月,ECMA 会员大会采纳了它的首个版本. 本系列教程旨在向大家分享本人当年学习Javascript的笔记和心得.本系列教程预计分五个部分. 第

  • js内置对象 学习笔记

    mark相关的知识点: 首先,什么是js的内置对象,它包括了些什么内容?(以下内容转自网上资源的整合) (W3shool JS手册地址:http://www.jb51.net/w3school/js/js_reference.htm) 作为一门编程语言,JavaScript提供了一些内置的对象和函数.内置对象提供编程的几种最常用的功能.JavaScript内置对象有以下几种. ● String对象:处理所有的字符串操作 ● Math对象:处理所有的数学运算 ● Date对象:处理日期和时间的存储

  • 学习Java九大内置对象

    本文实例为大家介绍了Java九大内置对象,供大家参考,具体内容如下 1.Request对象 该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交的信息. 当Request对象获取客户提交的汉字字符时,会出现乱码问题,必须进行特殊处理.首先,将获取的 字符串用ISO-8859-1进行编码,并将编码存发岛一个字节数组中,然后再将这个数组转化为字符串对象 即可.如下: String textContent=request.getParameter("bo

随机推荐