Cookies       QueryString         Application        Session

1、利用cookies保持客户端信息

  .NET System Web 控件名称以下三个类,可以使用它们来处理客户端的Cookies

  1、HttpCookie:提供一个建立和操作独立HTTPcookies的安全类型的方式

  2、HttpResponse:Cookies属性允许客户端cookies被操作

  3、HttpRequest:Cookies属性允许访问客户端操作的cookies

  HttpResponse和HttpRequest对象的Cookies属性将返回一个HttpCookieCollection对象,它可以将单独的cookies添加到集合(collection)中,

以及从集合(collection)获得一个单独cookies。

  HttpCookie类针对于客户存储而建立的单独的cookies。一旦HttpCookie对象被建立,可以将其添加到HttpResponse对象的Cookies属性中。同样的,

可以通过HttpResponse对象访问现有的cookies。HttpCookies类的共有属性如下:

    1)Domain:获得或设置与cookie有关的域名,可用于限制特定区域的cookie访问

    2)Expires:获得或设置cookie的终止日期和时间,可以将其设置为一个过去的日期以自动禁止或者删除cookie

    3)Names:获得或设置cookie的名称

    4)Path:获得或设置cookie的虚拟路径。这一属性允许限制cookie的范围,也就是说,访问cookie只能限制于一个特定的文件夹或路径。

         设置这一属性限制为只能访问特定路径和该路径下的所有文件

    5)Secure:发信号以表示是否使用SecureSocketsLayer(SSL)来发送cookie值

    6)Value:获得或设置一个单独的cookie值

    7)Values:返回包含在cookie中的key/value的一个集合

  每一个Cookie都是从Cookies中获得的,就是说Cookie是通过索引器的方式获得的。

  利用Response、Request对象读写,语法如下:

    //保存信息到Cookie中

    Response.Cookies["Cookie的名字"].value=变量的值;

    //读取Cookie

    Object 变量名=Request.Cookies["Cookie的名字"].value;

  Cookie属于HttpCookie,所以它的语法也可以写成如下形式:

    //键值对的方式保存信息

    HttpCookie  hCookie = new  HttpCookie("Cookie的名字",值);

    //保存Cookie到Cookies中

    Response.Cookies.Add(hCookie);

例:

//保存信息到Cookie中

protected void btnWrite_Click(object sender, EventArgs e)
{
Response.Cookies["firstcookie"].Value = textbox1.Text.Trim();
Response.Cookies["secondcookie"].Value = textbox2.Text.Trim();
//Response.Cookies["firstcookie"].Expires = DateTime.Now.AddDays(1);
// Response.Cookies["secondcookie"].Value = DateTime.Now.ToString();
}

//获取Cookie中的信息

protected void btnRead_Click(object sender, EventArgs e)
{
textbox1.Text= Request.Cookies["firstcookie"].Value;
textbox2.Text = Request.Cookies["secondcookie"].Value;
}

 

 

 

2、QueryString

   当使用表单的get方式提交数据时,表单中的数据被保存在Request对象的Querystring集合中。除了读取表单对象传递的参数外,Querystring集合还可以通过读取HTTP查询字符串中的参数值来传递参数。使用Querystring集合来传递数据的语法格式为:

  Request.Querystring(变量名)[(索引值)|.变量的个数]

其中各个参数的含义如下:

  1)变量名为在HTTP查询字符串中指定要检索的变量名称

  2)索引值用于检索多个变量值中的某一个

  3)HTTP查询字符串中的变量值由问号(?)后面的值指定

用QueryString在页面间传递值得具体过程有以下三步:

  (1)在源页面的代码中用需要传递的名称和值构造URL地址

  (2)在源页面的代码中用Request.Redirect(URL);重定向到上面的URL地址中

  (3)在目的页面的代码中用Request.QueryString["name"];取出URL地址中传递的值

例:

protected void btnSendMessage_Click(object sender, EventArgs e)
{

//第一步
string urlAddress;
urlAddress = "ReadCookie.aspx?name1=" +
textbox1.Text.ToString() + "&" +
"name2=" + textbox2.Text.ToString() + "&" +
"name3=" + textbox3.Text.ToString();

//第二步
Response.Redirect(urlAddress);
}

 

protected void btnRead_Click(object sender, EventArgs e)
{

//第三步
textbox1.Text = Request.QueryString["name1"];
textbox2.Text = Request.QueryString["name2"];
textbox3.Text = Request.QueryString["name3"];
}

使用QueryString在页面间传递值的优缺点:

  优点:

    使用简单,对于安全性要求不高时传递数字或文本值非常有效

  缺点:

    1)缺乏安全性,是因为它的值暴露在浏览器的URL地址中

    2)不能传递对象

 

 

 

3、Application

  Application变量在整个应用程序生命周期中都是有效的,类似于使用全局变量,所以可以在不同页面中对它进行存取。它和Session变量的区别在于,前者是所有的用户公用的全局变量,后者是各个用户独有的全局变量。

  Application变量的使用方法如下:

  1)在源页面的代码中创建需要传递的名称和值构造Application变量,如:

    Application["Name"]="Value(Or Object)";

  2)在目的页面的代码使用Application变量取出传递的值,如:

    Result=Application["Name"];

例:

protected void btnSendMessage_Click(object sender, EventArgs e)
{
Application["name1"] = textbox1.Text;
Application["name2"] = textbox2.Text;
Application["name3"] = textbox3.Text;
Response.Redirect("ReadCookie.aspx");
}

 

protected void btnRead_Click(object sender, EventArgs e)
{
textbox1.Text = Application["name1"].ToString();
textbox2.Text = Application["name2"].ToString();
textbox3.Text = Application["name3"].ToString();
}

使用Application进行页面传值的优缺点:

  优点:

    (1)使用简单,消耗较少的服务器资源

    (2)不仅能传递简单的数据类型,还能传递对象

    (3)数据量大小是不受限制的

  缺点:

    (1)作为全局变量容易被误操作

 

 

 

4、Session

  Session变量和Application变量非常类似,它们的区别在Application变量中提到了。它的使用方法如下:、

  1)在源页面的代码中创建需要传递的名称和值构造Session变量,如:

    Session["name"]="Value(Or Object)";

  2)在目的页面的代码中使用Session变量取出传递的值,如:

    Result=Session["name"];

使用Session进行页面传值的优缺点:

  优点:

    (1)使用简单,不仅能传递简单的数据类型,还能传递对象

    (2)数据量大小是不受限制的

  缺点:

    (1)在Session变量存储大量的数据会消耗较多的服务器资源