首页 > 代码库 > cookie,session,viewstate

cookie,session,viewstate

1.viewstate的原理是隐藏域。

  

  protected void Page_Load(object sender, EventArgs e)    {        ViewState["v1"] = "hello,world";    }

 

2.cookie是保存在浏览器的,一种是保存在缓存中,一种是保存在硬盘中。(保存在硬盘中的需要设置cookie的expires属性)

       string strName = Request.Form["txtUName"];            string strPwd = Request.Form["txtPwd"];            if (strName == "aaaaaa" && strPwd == "cccccc")            {                //新建 包含了 登录用户名 的cookie对象                HttpCookie cook = new HttpCookie("uInfo", strName);                //设置cook的失效时间为两天之后(保存在浏览器所在电脑的硬盘中了)                cook.Expires = DateTime.Now.AddDays(2);                //设置一个cook用来保存cook失效时间                HttpCookie cookTime = new HttpCookie("time", DateTime.Now.AddDays(2).ToString());                //将 cookie对象加入响应流中的cookie集合                Response.Cookies.Add(cook);                Response.Cookies.Add(cookTime);                Response.Redirect("Default.aspx");//重定向 302            }

 3.session保存在服务器上。利用了保存在浏览器缓存中的cookie技术。session可以保存任何对象,可以在webconfig里设置session的在服务器上失效的时间

  <system.web>      <compilation debug="true" targetFramework="4.0" />      <sessionState timeout="60"/>    </system.web>

  可以自己写一个sessionmanager类来模拟session的技术(用cookie存sessionID)。

  1.可以让ASPNET_STATE服务来保存session。(进程外session1)

  2.可以让session保存在数据库里,用aspnet_regsql.exe(进程外session2)

4.application

  保存在服务器端,一个浏览器设置了,其他的浏览器也都可以访问。(相当于公共厕所)

    protected void Button1_Click(object sender, EventArgs e)    {        Application.Lock();        Application["name"] = TextBox1.Text.Trim();        Application.UnLock();    }
    protected void Page_Load(object sender, EventArgs e)    {        Application.Lock();        Response.Write("god welcome you mr:" + Application["name"]);        Application.UnLock();    }

  application可以在服务器端做一些全局的配置。

  可以给项目添加全局应用程序文件(*.asax),在application_start()方法里写一个application值,供将来全局的访问。

 

cookie,session,viewstate