总结Session、Cookie、Application的原理和应用


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

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM