保存状态的办法


ASPNET的工作原理
  客户端请求--〉服务器找aspx-->ASPNET代码被发送给CRL进行编译-->返回HTML给浏览器
  HTTP是一种无状态的协议
1 保存状态的办法
  1)利用客户端保存
    1 ViewState,每个控件都有这个属性,所以在使用之前应该打开,但是它保存的内容不安全
      private void UseViewState()
      {
         if(ViewState["count"]==null)
             ViewState["count"]=0;
         int count=(int)ViewState["count"];
         count+=1;
         ViewState["count"]=count;   
      }
     2 利用隐藏域 HtmlInputHidden,但提交表单时隐藏的东西一起提交给服务器,必须使用POST方法,还有就是不安全
     3 利用Cookie,Cookie是保存在客户端的,位置C:/Documents and Settings/UserName/Cookies,用途:
       用户的个人配置,注册,弹出窗口
       设置
         Response.Cookies["username"].Value="prolove";//在服务器段设置
       读取
        string username= Request.Cookies["username"].Value
       清空
         Response.Cookies["username"].Value=null;
       设置时间
         Response.Cookies["username"].Expires=new DataTime(2008,1,11);
       模拟登录
         private void Logo(string username,string pwd)
         {
            Response.Cookies["username"].Value=username;
            Response.Cookies["pwd"].Value=pwd;
         }
         private bool IsLogo()
         {
            if(Request.Cookies["username"]!=null)
             {
               return true;
             }
            else
            {
               return false;
            } 
         }
      4 使用地址栏传递,不应该太长,不安全,使用GET方法
         Response.Redirect("A.aspx?username="+username);
         Request.Params["username"];
      5  使用表单传
         Request.Form["username"];
         Request["username"]; 
  2)利用服务器保存
     1 Aplication应用程序级别的状态保存
       注意加锁,对于频繁使用的数据可以放在里面,但是不应该太大.
       private void UseApp()
       {
           Application.Lock();
           if(Application["count"]!=null)
           {
              Application["count"]=Covert.ToInt32(Application["count"])+1;
             
           }
           else
           {
              Application["count"]=1;
           }
           Application.UnLock();
       }
       2 Session会话,每人一个,它和App都是存在于内存中的,但是ASPNET中的Session也可存储在硬盘上
          <sessionState mode="inProc" cookieless="false" timeout="20"/>//inproc表明存储在硬盘上
          方法:
           TimeOut()过期时间
           Abandon() 结束会话
           Clear() 清空
    3)利用数据库进行存储,对于大量的信息情况下 
         
        
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值