Session
基本原理:
当用户通过浏览器访问服务器时,服务器本身并不知道是谁来访问的(http协议是无状态的),于是它就给每个访问者进行临时编号(也就是给每个访问者创建相对应的Session(会话)),与此同时,为了方便一段时间内访问者可以对服务器“自由访问”,服务器就把临时编号(SeesionID)给访问者(存储在客户端的Cookie[无过期的Cookie]中,当浏览器关闭时释放,或使用URL方式),当这段时间内需要进行验证时(请求),服务器就可以直接拿着访问者的临时编号进行验证。
注:
1、每个用户进行访问服务器时,都会在服务端创建一个相对应的Session,分配的SessionID是唯一的,用来标识不同的访问用户
2、为了获取更快的存储速度,服务端把Session保存在内存中,因此存放在Session中的信息应该精简,避免内容过于复杂,当大量用户访问时可能导致内存溢出
3、Session是具有生命周期的,当超过了这段时间(超时时间默认为20分钟),Session就会失效
4、Session生成后,只要用户继续访问(Active),服务器就会更新该Session的最后访问时间,并维护该Session
5、当用户访问过多时,随之创建的Session也会变多。为了防止内存溢出的问题,服务器就会把长时间没有Active的Session给删除掉
应用:
例如:用户验证登陆
protected void btnLogin_Click(object sender, EventArgs e) { string user = txtUserName.Text.Trim(); string pass = this.texPwd.Text; string code = this.txtCode.Text; if (code == Session["code"].ToString())//比较验证码Session["code"]中的值 { string pwd = FormsAuthentication.HashPasswordForStoringInConfigFile(pass, "MD5"); int IntUserIn = CC.checkLogin(user, pwd); if (IntUserIn > 0) { Session["User"]=user;
... Response.Write(CC.MessageBox("用户登录登陆成功!")); } else { Response.Write(CC.MessageBox("您输入的用户名或密码错误,请重新输入!")); } } else { Response.Write(CC.MessageBox("验证码错误!")); } }
更多Session信息尽在→_→ http://msdn.microsoft.com/zh-cn/library/system.web.ui.page.session(v=vs.110).aspx
Cookie
原理:
Cookie是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个Web站点会话之间持久地保持数据。Request和Response对象都有一组Cookie。Request.cookie集合是一系列Cookie,从客户端与HTTP Request一起发送到Web服务器。反过来,如果你希望把Cookie发送到客户机,就可以使用Response.cookie。
理解性介绍→_→ http://www.open-open.com/lib/view/open1346029190083.html
Cookie和会话状态的工作原理及Cookie欺骗 →_→ http://blog.csdn.net/yangdelong/article/details/4792763
应用:
在我们平常写的B/S程序中,会经常用到cookie,主要有以下一些作用:
1、 记录用户名和密码
以及该用户需要保存的一些信息,如购物购站,使用cookie,可以让用户自动登录到站点等。
2、 定制站点
可以使用cookie来记录用户的偏好。
3、 定向广告
可以使用cookie来记录用记经常访问的主题,并向他们显示与这些主题相关的广告。
更多→_→ http://wangqiaowqo.iteye.com/blog/680841
Application
原理:
Application用于保存所有用户的公共的数据信息,如果使用Application对象,一个需要考虑的问题是任何写操作都要在Application_OnStart事件(global.asax)中完成.尽管使用Application.Lock和Applicaiton.Unlock方法来避免写操作的同步,但是它串行化了对Application对象的请求,当网站访问量大的时候会产生严重的性能瓶颈.因此最好不要用此对象保存大的数据集合。
应用:
一个经典的实例:在网页上显示在线人数
代码略
Application、Session、Cookie的区别→_→ http://www.cnblogs.com/breezeblew/archive/2008/05/02/1179143.html