webform中Session和Cookie對象的用法


(一)Session

       跟Cookies一樣用來存儲用戶數據

1、Session、Cookies對比

相同點:每一台電腦訪問服務器,都會是獨立的一套session或者Cookies,key值都一樣,但是內容都是不一樣的。

不同點:●Session的保存位置是保存在服務器內存上,Cookies保存在用戶硬盤上

           ●Session沒有持久的,在不對頁面進行任何操作的情況下,它的保存周期就是20分鍾;Cookies可以持久也可不持久,取決於用戶

2、Session重點

Session不要濫用,也不要不用,濫用可能會造成服務器內容溢出,不用會造成資源浪費,因為內存中的數據提取及交互是最快的

3、用法

賦值:Session["key"] = 值;

取值:string a = Session["key"];

清除: Session["key"]=null;

注意:

  1、不要存大量數據在Session里

  2、臨時Session取完無用后記得 = null清空它

 

//賦值
string s = TextBox1.Text;
Session["aa"] = s;
//取值
if(Session["aa"]!=null)
    Label1.Text=Session["aa"].tostring();

 

(二)cookies

簡單摘要:    

       在用戶電腦的硬盤上保存的一段文本

       http協議包括瀏覽器,允許站點在用戶電腦上以Cookies的形式來臨時保存數據

       如果沒有設置保存時間,即會話cookies時:

1、如果你20分鍾內沒有再次刷新頁面,那么此cookies就會自動刪除掉

2、當前訪問連接中斷,如關閉瀏覽器,那么cookies會自動刪除

        如果設置保存時間,到時間后,cookies會自動刪除 

       當然,cookies的保存與否,關鍵在用戶,用戶可以手動清楚cookie。

       作用:保持用戶的登陸狀態

用法:

1、獲取賬號:Response.Cookies["user"].Value = TextBox1.Text;

2、給該賬號設置登錄保持的過期時間:Response.Cookies["user"].Expires = DateTime.Now.AddDays(7);

3、清除cookies:Response.Cookies["user"].Expires = DateTime.Now.AddDays(-5); 只要讓數值為負即可,表示已過期幾天

 

 

//賦值
string s = TextBox1.Text;
Response.Cookies["username"].Value = s;
if (CheckBox1.Checked)
            {
                Response.Cookies["username"].Expires =DateTime.Now.AddDays(3);//設置Cookie的過期時間
            }
//取值
if (Request.Cookies["username"] != null)
            Label1.Text = Request.Cookies["username"].Value;

Cookie

Server.Transfer("Default2.aspx);使用此方法,可以在不變動地址欄顯示的地址的情況下跳轉頁面(比如一定要用地址欄傳址但又不想讓用戶看到所傳變量時)

 

建立登錄Login頁面:

前台代碼:

復制代碼
<form id="form1" runat="server">
    用戶名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
        密碼:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
        <asp:CheckBox ID="CheckBox1" runat="server" /><label for="CheckBox1">記住登陸狀態7天</label><br />

        <asp:Button ID="Button1" runat="server" Text="登陸" />
    </form>
復制代碼

后台代碼:

復制代碼
protected void Page_Load(object sender, EventArgs e)
    {
        Button1.Click += Button1_Click;
    }

    void Button1_Click(object sender, EventArgs e)
    {
        //取值,數據庫查詢
        bool ok = new UsersDA().Select(TextBox1.Text, TextBox2.Text);
        if (ok)
        {
            //若查到數據,即可以登陸成功
            Response.Cookies["user"].Value = TextBox1.Text;

            if (CheckBox1.Checked)
            {
                //給cookies設置保存時間
                Response.Cookies["user"].Expires = DateTime.Now.AddDays(7);
            }
            Response.Redirect("Main.aspx");
        }
復制代碼

主界面Main后台代碼:

復制代碼
 //判斷,cookies是否為空,不為空,根據cookies傳的值查詢
        if (Request.Cookies["user"] != null)
        {
            Users u = new UsersDA().Select(Request.Cookies["user"].Value);

            Labdl.Text = u.NickName;
            Literal1.Text = ",歡迎你!";
        }
        //為空,跳轉登錄頁面
        else
        {
            Response.Redirect("Login.aspx");
        }
復制代碼


有登陸就有退出登錄:

Main主界面退出登錄前台代碼:

<asp:Button ID="Btntc" runat="server" Text="退出登陸" />

后台代碼(清除cookies):

復制代碼
void Btntc_Click(object sender, EventArgs e)
    {
        //1清除cookies
        Response.Cookies["user"].Expires = DateTime.Now.AddDays(-5);
        //2刷新頁面/跳到登陸頁面
        Response.Redirect("Login.aspx");
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM