學習ASP.NET中的Application、Session、Cookie

學習ASP.NET中的Application、Session、Cookie

1.Application建立的變量,在系統內部任何地方都可以訪問,通常網站地訪問統計可能會用的較多。如果要用到Application首先在VS2005中建立一個global.asa文件。例如我們要寫一個網站訪問數量的統計的話,在global.asa中先聲明變量iCount。如下所示:

       protected void Application_Start(object sender, EventArgs e)
        {
            Application["iCount"] = 0;
        }


然後在Page_Load事件中打入以下代碼:

       protected void Page_Load(object sender, EventArgs e)
        {
            Application["iCount"] = (int)Application["iCount"] + 1;
            Response.Write(Application["iCount"]);
        }

  運行後就可以看到計數,每刷新一次計數會自動累加。如果要停止累加的話,只能把IIS停止後再啓動,此時計數會自動歸零

 

由於Application變量是一個共享的對象,所以有多人來訪問它的時候我們就必須用到鎖定。當某一個用戶需要操作它的時候就用lock鎖定它,操作完成後用unlock來解鎖。代碼如下:

        protected void Page_Load(object sender, EventArgs e)
        {
            Application.Lock;
            Application["iCount"] = (int)Application["iCount"] + 1;
            Application.UnLock;

            Response.Write(Application["iCount"]);

        }

 

2. Session是每個用戶使用程序時就會建立對象,也就是Application對象只有一個,而Session對象有很多個。Session不是共享的,當用戶退出程序後它就會在20分鐘後銷燬,當然,我們可以設定這個銷燬的時間。當用戶再次進入程序是Session對象還沒有被銷燬的話,我們就可以繼續使用它們,否則就要再建立了。Session 的優點是它在 Web 服務器上保持用戶的狀態信息,可供在任何時間從任何頁訪問這些信息。因爲瀏覽器並不需要存儲任何這些信息,所以可以使用任何瀏覽器,甚至可以使用 PDA 或手機這樣的瀏覽器設備。

  首先,我們要建立一個Session變量

      protected void Session_Start(object sender, EventArgs e)
        {
            Session["UserName"] = "你的姓名";

            //也可以是以下的方式建立

           //Session.Add("UserName","你的姓名");
        }

 調用的時候

        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("<br>" + Session["UserName"]);
            Response.Write("<br>" + Session["PSW"]);
        }
           

 ASP.NET中Session的用法之一:使用Session設定權限

Session的初次使用:
protected void Page_Load(object sender, EventArgs e)
{//這是頁面的初始化
     if (!Page.IsPostBack)
     {//判斷是否爲初次執行
         if (Object.Equals(Session["AdminName"], null))
         {//判斷在Session["AdminName"]是否存在值
             Response.Redirect("ErrorPage.aspx", true);
         }
         else
         {//要是存在則記錄下這個人的用戶名
            Name.Text =  Session["AdminName"].ToString();
         }
     }
}

ASP.NET中Session的用法之二:進行頁面傳值

使用Session變量傳值是一種最常見的方式了,此種方式不僅可以把值傳遞到下一個頁面,還可以交叉傳遞到多個頁面,直至把Session變量的值Remove後,才消失。

<1>.創建一個頁面,

<2>.在頁面內添加兩個TextBox,叫txtName,txtAddr,添加一個Button,叫btnConfirm

  protected void btnConfirm_Click(object sender, EventArgs e)
    {
        Session["Name"] = txtName.Text;
        Session["Addr"] = txtAddr.Text;
        Response.Redirect("Other.aspx");

    }

<3>.再創建一個頁面,叫Other.aspx
<4>.在頁面內添加兩個Label,叫 lblName,lblAddr

   protected void Page_Load(object sender, EventArgs e)
    {
        lblName.Text = Session["Name"].ToString();
        lbladdr.Text = Session["Addr"].ToString();

        Session.Remove("Name");
        Session.Remove("Addr");
    }


 3. Cookie 其實就是在客戶本機上建立一個對象,它可以長時間保存客戶的一些信息。例如我們瀏覽網頁是經常看見的記住我,或者論壇所說的保存一個月等等

   〈1〉寫入Cookie

     protected void btnConfirm_Click(object sender, EventArgs e)
     {
        HttpCookie myCK = new HttpCookie("UserInfo");
        myCK.Values["Name"] = txtName.Text;
        myCK.Values["Psw"] = txtPsw.Text;
        //設置此Cookie在一天後過期
        myCK.Expires = DateTime.Now.AddDays(1);
        Response.Cookies.Add(myCK);
      }

     <2>讀取Cookie

    protected void BtnGetCookie_Click(object sender, EventArgs e)
    {
        HttpCookie getCK = Request.Cookies["UserInfo"];
        if (Request.Cookies["UserInfo"]!=null)
        {
            Response.Write(getCK.Values["Name"]);
            Response.Write("<br>" + getCK.Values["Psw"]);
        }

    }
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章