日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

asp.net中session的原理及应用

發布時間:2024/4/17 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asp.net中session的原理及应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Session簡介丶特性


1.Session是一種Web會話中的常用狀態之一。

2.Session提供了一種把信息保存在服務器內存中的方式。他能儲存任何數據類型,包含自定義對象。

3.每個客戶端的Seesion是獨立存儲的。

4.在整個會話過程中,只要SessionID的cookie不丟失,都會保存Session信息的。

5.Session不能跨進程訪問,只能由該會話的用戶訪問。應為提取Session數據的id標識是以Cookie的方式保存到訪問者瀏覽器的緩存里的。

6.當會話終止,或過期時,服務器就清除Session對象。

7.Session常用于保存登錄用戶的ID.

8.Session保存的數據是跨頁面全局型的。


Session的使用


這里我寫入一個例子,便于下面闡述。

?

<head runat="server"><title></title><script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script><script type="text/javascript">function getSessionClick(action) { //這個函數是為了知道哪一個提交按鈕被點擊$("#hidlgc").val(""); //清空隱藏值$("#hidlgc").val(action); //給隱藏控件賦值}</script> </head> <body><form id="form1" method="post" action="MySession.aspx"><table><tr><td>賬號:</td><td><input type="text" name="txtUid" /></td>`</tr><tr><td>密碼:</td><td><input type="password" name="txtPwd" /></td></tr><tr> <td colspan="2"><input type="hidden" value="" id="hidlgc" name="hidlgclick" /> <input οnclick="getSessionClick('lgclick')" type="submit" value="登錄" /><input type="submit" οnclick="getSessionClick('getSession')" value="獲取session" /><input type="submit" οnclick="getSessionClick('backLg')" value="退出登錄" /></td></tr></table></form> </body>

?

protected void Page_Load(object sender, EventArgs e){//把用戶id寫入session中if (Request.Form["hidlgclick"] == "lgclick"){if(Request.Form["txtUid"].ToString()=="admin"&&Request.Form["txtUid"].ToString()=="admin") //判斷用戶登錄{Session["userName"] = Request.Form["txtUid"].ToString(); //把用戶id保存到session中Response.Write(Session["userName"].ToString()+"---點擊登錄"); //獲取session,并寫入頁面}}//獲取Sessionif (Request.Form["hidlgclick"] == "getSession"){if (Session["userName"] != null){Response.Write(Session["userName"].ToString() + "---點擊獲取session"); //獲取session,并寫入頁面}}//取消當前會話,相當于注銷(退出登錄)。if (Request.Form["hidlgclick"] == "backLg"){Session.Abandon();}} <system.web><sessionState timeout="40"></sessionState> <!---設置session的過期時間,時間以分鐘為單位-->


Session原理(根據上面例子闡述)


?

一、session是怎么存儲,提取的?

1.在服務器端有一個session池,用來存儲每個用戶提交session中的數據,Session對于每一個客戶端(或者說瀏覽器實例)是“人手一份”,用戶首次與Web服務器建立連接的時候,服務器會給用戶分發一個SessionID作為標識。SessionID是一個由24個字符組成的隨機字符串。用戶每次提交頁面,瀏覽器都會把這個SessionID包含在HTTP頭中提交給Web服務器,這樣Web服務器就能區分當前請求頁面的是哪一個客戶端,而這個SessionID是一cookie的方式保存的在客戶端的內存中的,如果想要得到Session池中的數據,服務器就會根據客戶端提交的唯一SessionID標識給出相應的數據返回。

2.輸入正確的賬號密碼,點擊登錄,頁面就會輸出 ?“admin --- 點擊登錄”

二、Session池中每個客戶端的數據是怎么存儲的?

1.存儲在Session池中的數據是全局型的數據,可以跨頁面訪問,每個SessionID中只存儲唯一的數據,如:首先你這樣設定:session["userName"]="admin",然后你在會話還沒結束的session還沒過期的情況下,你又設定:session["userName"]="123";這樣這個SessionID沒變,然而Session池中的數據則被覆蓋。此時session["userName"]的值就是“123”,而不是其它。

2.Session池中的數據不能跨進程訪問。如:打開login.aspx頁面寫入session[“userName”]="admin";然后login頁面不關閉,即此會話不結束,在這是你再在另外一個瀏覽器中打開一個login.aspx頁面則session["userName"]=null

3.輸入賬號密碼,點擊登錄頁面輸出??“admin --- 點擊登錄” ,如果緊接著點擊獲取session按鈕,則頁面只輸出"admin--- 點擊獲取session",如果頁面不關閉,打開另外一個瀏覽器,點擊獲取session按鈕,則頁面沒法應。

三丶session的聲明周期與銷毀

1.session存儲數據計時是滾動計時方式。具體是這樣的,如果你打開寫入session,從寫入開始,此頁面如果一直沒有提交操作,則默認時間是20分鐘,20分鐘后session被服務器自動銷毀,如過有提交操作,服務器會從提交后重新計時以此類推,直至設定時間內銷毀。

2.可以設置session的銷毀時間。上面代碼有提到。

四丶session中保存的數據是在服務端的,而每個用戶如進行登錄操作,都要進行session數據寫入,所以建議慎用session,就是少用。


?

轉載于:https://www.cnblogs.com/zhaohongtian/p/6810291.html

總結

以上是生活随笔為你收集整理的asp.net中session的原理及应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。