最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

asp.net中session的原理及應(yīng)用詳解

 更新時(shí)間:2012年11月20日 16:34:43   作者:  
Session是一種Web會(huì)話中的常用狀態(tài)之一,Session提供了一種把信息保存在服務(wù)器內(nèi)存中的方式。他能儲(chǔ)存任何數(shù)據(jù)類型,包含自定義對(duì)象,本文將詳細(xì)介紹asp.net中session的原理及應(yīng)用,需要的朋友可以參考下
Session簡(jiǎn)介丶特性
--------------------------------------------------------------------------------
1.Session是一種Web會(huì)話中的常用狀態(tài)之一。
2.Session提供了一種把信息保存在服務(wù)器內(nèi)存中的方式。他能儲(chǔ)存任何數(shù)據(jù)類型,包含自定義對(duì)象。
3.每個(gè)客戶端的Seesion是獨(dú)立存儲(chǔ)的。
4.在整個(gè)會(huì)話過(guò)程中,只要SessionID的cookie不丟失,都會(huì)保存Session信息的。
5.Session不能跨進(jìn)程訪問(wèn),只能由該會(huì)話的用戶訪問(wèn)。應(yīng)為提取Session數(shù)據(jù)的id標(biāo)識(shí)是以Cookie的方式保存到訪問(wèn)者瀏覽器的緩存里的。
6.當(dāng)會(huì)話終止,或過(guò)期時(shí),服務(wù)器就清除Session對(duì)象。
7.Session常用于保存登錄用戶的ID.
8.Session保存的數(shù)據(jù)是跨頁(yè)面全局型的。
--------------------------------------------------------------------------------
Session的使用
--------------------------------------------------------------------------------
這里我寫入一個(gè)例子,便于下面闡述。
復(fù)制代碼 代碼如下:

<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) { //這個(gè)函數(shù)是為了知道哪一個(gè)提交按鈕被點(diǎn)擊
$("#hidlgc").val(""); //清空隱藏值
$("#hidlgc").val(action); //給隱藏控件賦值
}
</script>
</head>
<body>
<form id="form1" method="post" action="MySession.aspx">
<table>
<tr>
<td>賬號(hào):</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 onclick="getSessionClick('lgclick')" type="submit" value="登錄" />
<input type="submit" onclick="getSessionClick('getSession')" value="獲取session" />
<input type="submit" onclick="getSessionClick('backLg')" value="退出登錄" />
</td>
</tr>
</table>
</form>
</body>

復(fù)制代碼 代碼如下:

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()+"---點(diǎn)擊登錄"); //獲取session,并寫入頁(yè)面
}
}
//獲取Session
if (Request.Form["hidlgclick"] == "getSession")
{
if (Session["userName"] != null)
{
Response.Write(Session["userName"].ToString() + "---點(diǎn)擊獲取session"); //獲取session,并寫入頁(yè)面
}
}
//取消當(dāng)前會(huì)話,相當(dāng)于注銷(退出登錄)。
if (Request.Form["hidlgclick"] == "backLg")
{
Session.Abandon();
}
}

復(fù)制代碼 代碼如下:

<system.web>
<sessionState timeout="40"></sessionState> <!---設(shè)置session的過(guò)期時(shí)間,時(shí)間以分鐘為單位-->
 

Session原理(根據(jù)上面例子闡述)
--------------------------------------------------------------------------------
一、session是怎么存儲(chǔ),提取的?
1.在服務(wù)器端有一個(gè)session池,用來(lái)存儲(chǔ)每個(gè)用戶提交session中的數(shù)據(jù),Session對(duì)于每一個(gè)客戶端(或者說(shuō)瀏覽器實(shí)例)是“人手一份”,用戶首次與Web服務(wù)器建立連接的時(shí)候,服務(wù)器會(huì)給用戶分發(fā)一個(gè)SessionID作為標(biāo)識(shí)。SessionID是一個(gè)由24個(gè)字符組成的隨機(jī)字符串。用戶每次提交頁(yè)面,瀏覽器都會(huì)把這個(gè)SessionID包含在HTTP頭中提交給Web服務(wù)器,這樣Web服務(wù)器就能區(qū)分當(dāng)前請(qǐng)求頁(yè)面的是哪一個(gè)客戶端,而這個(gè)SessionID是一cookie的方式保存的在客戶端的內(nèi)存中的,如果想要得到Session池中的數(shù)據(jù),服務(wù)器就會(huì)根據(jù)客戶端提交的唯一SessionID標(biāo)識(shí)給出相應(yīng)的數(shù)據(jù)返回。
2.輸入正確的賬號(hào)密碼,點(diǎn)擊登錄,頁(yè)面就會(huì)輸出 “admin --- 點(diǎn)擊登錄”
二、Session池中每個(gè)客戶端的數(shù)據(jù)是怎么存儲(chǔ)的?
1.存儲(chǔ)在Session池中的數(shù)據(jù)是全局型的數(shù)據(jù),可以跨頁(yè)面訪問(wèn),每個(gè)SessionID中只存儲(chǔ)唯一的數(shù)據(jù),如:首先你這樣設(shè)定:session["userName"]="admin",然后你在會(huì)話還沒結(jié)束的session還沒過(guò)期的情況下,你又設(shè)定:session["userName"]="123";這樣這個(gè)SessionID沒變,然而Session池中的數(shù)據(jù)則被覆蓋。此時(shí)session["userName"]的值就是“123”,而不是其它。
2.Session池中的數(shù)據(jù)不能跨進(jìn)程訪問(wèn)。如:打開login.aspx頁(yè)面寫入session[“userName”]="admin";然后login頁(yè)面不關(guān)閉,即此會(huì)話不結(jié)束,在這是你再在另外一個(gè)瀏覽器中打開一個(gè)login.aspx頁(yè)面則session["userName"]=null
3.輸入賬號(hào)密碼,點(diǎn)擊登錄頁(yè)面輸出 “admin --- 點(diǎn)擊登錄” ,如果緊接著點(diǎn)擊獲取session按鈕,則頁(yè)面只輸出"admin--- 點(diǎn)擊獲取session",如果頁(yè)面不關(guān)閉,打開另外一個(gè)瀏覽器,點(diǎn)擊獲取session按鈕,則頁(yè)面沒法應(yīng)。
三丶session的聲明周期與銷毀
1.session存儲(chǔ)數(shù)據(jù)計(jì)時(shí)是滾動(dòng)計(jì)時(shí)方式。具體是這樣的,如果你打開寫入session,從寫入開始,此頁(yè)面如果一直沒有提交操作,則默認(rèn)時(shí)間是20分鐘,20分鐘后session被服務(wù)器自動(dòng)銷毀,如過(guò)有提交操作,服務(wù)器會(huì)從提交后重新計(jì)時(shí)以此類推,直至設(shè)定時(shí)間內(nèi)銷毀。
2.可以設(shè)置session的銷毀時(shí)間。上面代碼有提到。
四丶session中保存的數(shù)據(jù)是在服務(wù)端的,而每個(gè)用戶如進(jìn)行登錄操作,都要進(jìn)行session數(shù)據(jù)寫入,所以建議慎用session,就是少用。

相關(guān)文章

  • ASP.NET解決上傳大文件問(wèn)題的方法

    ASP.NET解決上傳大文件問(wèn)題的方法

    ASP.NET解決上傳大文件問(wèn)題的方法,需要的朋友可以參考一下
    2013-03-03
  • ASP.NET緩存 方法分析和實(shí)踐示例

    ASP.NET緩存 方法分析和實(shí)踐示例

    說(shuō)到ASP.NET緩存,那就是:盡早緩存;經(jīng)常緩存您應(yīng)該在應(yīng)用程序的每一層都實(shí)現(xiàn)緩存。
    2010-10-10
  • .NET的Ajax請(qǐng)求數(shù)據(jù)提交實(shí)例

    .NET的Ajax請(qǐng)求數(shù)據(jù)提交實(shí)例

    這篇文章主要介紹了.NET的Ajax請(qǐng)求數(shù)據(jù)提交實(shí)例,較為詳細(xì)的分析了Ajax請(qǐng)求、數(shù)據(jù)的提交以及參數(shù)的傳遞技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • asp.net FreeTextBox配置詳解

    asp.net FreeTextBox配置詳解

    FreeTextBox 是一個(gè)開源的服務(wù)器控件。我們可以輕松地將其嵌入到 Web Forms 中實(shí)現(xiàn)HTML內(nèi)容的在線編輯。
    2009-11-11
  • 談?wù)勅绾卧贏SP.NET Core中實(shí)現(xiàn)CORS跨域

    談?wù)勅绾卧贏SP.NET Core中實(shí)現(xiàn)CORS跨域

    本篇文章主要介紹了如何在ASP.NET Core中實(shí)現(xiàn)CORS跨域,CORS主要是解決Ajax跨域限制的問(wèn)題,有興趣的可以了解一下。
    2016-12-12
  • asp.net core 集成swagger ui的原理解析

    asp.net core 集成swagger ui的原理解析

    本文主要講解了如何對(duì)API進(jìn)行分組,這里僅僅是舉了一個(gè)按照API功能進(jìn)行分組的例子,其實(shí)在實(shí)際開發(fā)中,要按照何種方式分組,可以按照需求靈活定義,比如按照API版本進(jìn)行分組
    2021-10-10
  • ASP.NET Core利用Jaeger實(shí)現(xiàn)分布式追蹤詳解

    ASP.NET Core利用Jaeger實(shí)現(xiàn)分布式追蹤詳解

    這篇文章主要給大家介紹了關(guān)于ASP.NET Core利用Jaeger實(shí)現(xiàn)分布式追蹤的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用ASP.NET Core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • .net core webapi 大文件上傳到wwwroot文件夾的操作代碼

    .net core webapi 大文件上傳到wwwroot文件夾的操作代碼

    這篇文章主要介紹了.net core webapi 大文件上傳到wwwroot文件夾的操作代碼,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-12-12
  • JavaScript驗(yàn)證用戶輸入的是字符或數(shù)字及ASCII Chart應(yīng)用

    JavaScript驗(yàn)證用戶輸入的是字符或數(shù)字及ASCII Chart應(yīng)用

    我們可以根據(jù)onkeydown事件的event.keyCode即是ASCII Chart來(lái)判斷字符或數(shù)字等,本文提供了相關(guān)鍵盤key對(duì)應(yīng)的ASCII碼,以供用戶使用是參考及使用onpaste事件只能輸入字符和數(shù)字防止粘貼等的,感興趣的朋友可以了解下
    2013-01-01
  • .NET中彈出對(duì)話框的方法匯總

    .NET中彈出對(duì)話框的方法匯總

    下面是本人對(duì)常用對(duì)話框使用的匯總,希望對(duì)大家有所幫助,同時(shí)也歡迎大家補(bǔ)充。
    2013-07-07

最新評(píng)論

禹州市| 景泰县| 渝北区| 临澧县| 吉木乃县| 葫芦岛市| 疏勒县| 雅江县| 永定县| 榆树市| 峨眉山市| 积石山| 连山| 晴隆县| 方正县| 高阳县| 阿克苏市| 宿州市| 白朗县| 色达县| 时尚| 长沙县| 杭锦旗| 玉树县| 且末县| 那曲县| 满城县| 吕梁市| 峨边| 花莲市| 东安县| 缙云县| 甘孜县| 兰溪市| 嘉定区| 邵阳县| 濉溪县| 获嘉县| 新乐市| 藁城市| 德兴市|