cookie,session,viewstate
- viewstate的原理是隐藏域。
protected void Page_Load(object sender, EventArgs e) { ViewState["v1"] = "hello,world"; }
- 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 }
- session保存在服务器上。利用了保存在浏览器缓存中的cookie技术。session可以保存任何对象,可以在webconfig里设置session的在服务器上失效的时间
<system.web> <compilation debug="true" targetFramework="4.0" /> <sessionState timeout="60"/> </system.web>
可以自己写一个sessionmanager类来模拟session的技术(用cookie存sessionID)。
- 可以让ASPNET_STATE服务来保存session。(进程外session1)
- 可以让session保存在数据库里,用aspnet_regsql.exe(进程外session2)
- 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值,供将来全局的访问。
- form的runat="server"属性。有这个属性的时候,在生产的HTML代码里会有一个_VIEWSTATE的隐藏域。在后台就可以通过IsPostBack来判断是否是第一次访问。
未经作者允许,禁止转载