Session、Cookie、Local Storage Session Storage

Session、Cookie、 Local Storage 和Session Storage技术诞生的原因

  • HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。于是需要引入一种机制,COOKIE于是就顺应而生。
  • Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。
  • Local Storage 和Session Storage是HTML5提供的在客户端存储数据的新方法,
    Local Storage 没有时间限制
    Session Storage针对一个session的数据存储。

Session和Cookie的定义

  1. Session:Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
  2. Cookie:Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。

区别

  1. cookie数据存放在浏览器中,而Session数据放在服务器中
  2. cookie一般存放的少量且不重要的数据,Session中可以存放较多的数据。
  3. cookie中存放的字符串,session中可以存放任何对象
  4. localStorage 与cookie的主要区别是,存储的数据量较大,且没有时间限制。
  5. sessionStorage 方法针对一个 session 进行数据存储。当用户关闭浏览器窗口后,数据会被删除。

存储数据的语法

session

  • 向session里面存放数据
    在页面main.aspx.cs中存放session,并获取sessionID
   public partial class main : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Session["username"] = "tom";
            string sessionID = Session.SessionID;
        }
    }
  • 从session里面取数据

在页面table.aspx.cs中取出session,并获取sessionID,

    public partial class table : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string username = Session["username"].ToString();
            string sessionID = Session.SessionID;
        }    
    }

在同一个浏览器的同一次会话中,两个sessionID相同。这是因为,当设置Session,页面响应时,会想浏览器的Cookie中自动写入一个Key为“ASP.NET_SessionId”,Value为SessionID的cookie键值对,默认改session是全网站有效。当用户在该浏览器下,再次访问页面,会将此cookie发送给服务器。

cookie

后台cookie

  • 向Cookie里面存放数据
 public partial class main : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            HttpCookie cookie = new HttpCookie("username","tim");
            Response.SetCookie(cookie);
        }
    }

在程序运行结束,可以在浏览器中看到Cookies中已经存放了Name为username,Value为tim的cookie,如果cookie不设置过期时间,默认浏览器关闭,cookie失效。

  • 从Cookie里面取数据
 public partial class main : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string username = Request.Cookies["username"].Value;
        }
    }

浏览器cookie

使用jQuery的cookie插件,设置cookie

  Cookies.set('language', 'zh');

读取cookie

 var a=  Cookies.get('language');

LocalStorage

设置LocalStorage

  localStorage.language="zh";

读取LocalStorage

  var a= localStorage.language;

Session Storage

设置Session Storage

  sessionStorage.language="zh";

读取Session Storage

var a= sessionStorage.language;

在WebService中使用Session

默认WebService中的Session并没有启用,若需要启用,则需要输入

 [WebMethod (EnableSession=true)]

启用后,可以在函数中使用session,使用方法与在aspx后台使用方法一致

   [WebMethod (EnableSession=true)]
        public string HelloWorld()
        {
            Session["hi"] = "123";
            return Session.SessionID;
        }

只有向session中存放数据,sessionID才会被写入到浏览器的cookie中

猜你喜欢

转载自blog.csdn.net/weixin_41707267/article/details/84107883