---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
asp.net中的cookie。
cookie是通过在服务器生成一个httpcookie键值对,然后通过http响应输出流,将此键值对输送到用户浏览器,
用户浏览器接收到这个cookie值之后,在每一次象服务器提交表单数据的同时,还会在cookie值也同时提交
到服务器,而且cookie值不仅只是有 我们手动在服务器为其添加的cookie,它还会包括和站点相关的所有的cookie
cookie的运行模式是,我在服务器端给你浏览器写一个cookie 浏览器接收到服务器发给它的这个cookie之后,
在此之后的每一次浏览器和服务器交互的这么一个过程中,浏览器不单单只是将表单数据提交给服务器,
也会将浏览器中存放的cookie值也传回给服务器,服务器那边可以通过用户传送过来的cookie键值对在服务器内存里
动态的创建一个新的cookie对象 来存放和索引浏览器那边传过来的cookie值,以便确定浏览器和服务器之间的唯一
标识符的这么一个功能。
在ASP.NET中,我们可以通过使用两个页面的形式来完成一个简单的cookie赋值和cookie取值的操作。
首先是cookie赋值。
我们在一个文件名叫“cookie赋值”的aspx文件的code_behind代码的单击事件中象用户浏览器发送一个cookie对象、
//cookie赋值操作.aspx
protect void btn_click(object sender,EventArgs e)
{
//利用Response响应输出流对象的SetCookie方法向用户浏览器发送一个cookie
Response.SetCookie(new HttpCookie("BrowserId",Guid.NewId().ToString()));
}
//cookie取值操作.aspx
protect void btn_click(object sender,EventArgs e)
{
//利用Request对象的Cookie对象来索引到浏览器提交过来的cookie值
string BrowserId = Request.Cookies["BrowserId"].value;
this.Label1.Text = BrowserId;
}
到这一步 细心的人也许会发现,对于访问同一个网站的所有人来说,服务器为其提供的cookie键值对中
所有的键都是相同的,也许有人就会有这么一个疑问了 既然键都相同的话,那还要cookie干什么呢?
其实,在cookie中 关键起作用的不是键 而是值。而且cookie一般都不会单独的去使用,服务器会根据
当前cookie传过来的值在服务器索引或者创建一个基于此值的一个内存空间(session),它用来表示
当前用户在当前站点服务器内存中的一个“私人位置”.。只有它能访问,别人是不能访问的。
cookie和session在服务器端的页面之间能够传值的原理的差异:
cookie之所能在服务器端各个页面之间传递值,那是因为 浏览器的一个机制:每次在象服务器
提交数据的时候,一定还会提交和当前站点相关信息的所有cookie以及我们在服务器端为当前浏览器设置的
cookie。然后服务器,会根据浏览器传过来的cookie键值对,可以在任意的页面中创建一个新的cookie对象
来接收,既而形成了 cookie能够在网站各个页面之间互相传值的可行性。
Session 能在服务器之间传值,和cookie是有本质上的差别的。
其一:cookie 是往返于服务器端和浏览器端的。而Session只存在服务器端。
其二:cookie可以在网站页面后台代码的任何地方根据浏览器传过来的cookie值动态的创建cookie
而session则是对于整个网站的所有的网页类的实例来说,它是一个第三者。
其三:在每一次的请求------处理------响应模式中,其实服务器是在后台不断的实例化当前页面的实例对象,
处理完之后 ,又会由GC机制销毁这个对象。所以,网站的个页面之间是不可能不通过第三者来实现
跨页面传值的。
其四:Session 是存放在一个独立于网站中各个页面的类外的一个类,但它门又同属于一个程序集,并且Session存放
类的那个集合是一个静态的,它只于当前Session管理类关联,不和Session管理类的实例关联。所以,只要服务器
不重启,或者发生其他的什么意外,那么用于的Session永远都是存放在Session管理类的这个静态成员中的。
而Session管理类对于网站中的各个页面所代表的类,它是属于第三者,只要它们在同一个程序集它,那么各个网页的
的后台代码中都能通过Session静态管理类的某个方法来取得当前用户的Session值,以达到网站个页面之间传值的问题。
Session传值,更是趋向于面向对象思想。而cookie能在各页面传值只是浏览器的一种机制而产生的。
详细请查看: http://net.itheima.com/