国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Web會(huì)話狀態(tài)的維持

2019-11-18 14:08:25
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  Web會(huì)話狀態(tài)的維持

假如你對(duì)以下問(wèn)題感愛(ài)好但是又不能確切的回答,你就應(yīng)該閱讀此文.

1.session是什么?
2.Cookie又是什么?
3.假如完全禁用了Cookies,Session還起作用嗎?
4.為什么有的網(wǎng)站登錄一次以后就不用再登錄?
5.asp中的Session是否依靠Cookie?
6.jsp中的Session是否依靠Cookie?
7.asp.net中的Session又是怎么回事?

下面將具體的講述會(huì)話狀態(tài)的維持,看完之后你應(yīng)該可以回答上面的幾個(gè)問(wèn)題了
1.Session和Cookie的由來(lái)
這里我不區(qū)分Cookie和Cookies,只是一個(gè)復(fù)數(shù)形式而已.
我們都知道http是無(wú)狀態(tài)的協(xié)議,就是說(shuō)每次請(qǐng)求都是分開(kāi)的,服務(wù)器根本
不知道兩次請(qǐng)求是否是同一個(gè)人,假如我們的內(nèi)容是完全公開(kāi)的,也就是所有
內(nèi)容誰(shuí)都可以看(比如sina的新聞),這種情況呀根本就沒(méi)有必要知道兩次請(qǐng)求
是不是同一個(gè).但是大部分情況下我們不希望這樣,我們希望只有會(huì)員登錄之后
才能訪問(wèn)(所有的論壇幾乎都是這樣).而其他人不答應(yīng)他們反問(wèn),于是便要知道
每次請(qǐng)求的是不是同一個(gè)人,這就是會(huì)話,也就是一個(gè)Session,而且這個(gè)
Session是以Cookie為基礎(chǔ)的,Cookie最才是網(wǎng)景公司提出的,也叫小甜餅.
服務(wù)器端對(duì)每個(gè)請(qǐng)求維持一個(gè)會(huì)話,并且有一個(gè)唯一的SessionID.假如客戶(hù)端
沒(méi)有禁用Cookie的話,客戶(hù)第一次請(qǐng)求的時(shí)候這個(gè)ID會(huì)寫(xiě)到客戶(hù)端的硬盤(pán)上
(不相信?看一下文件夾C:/Documents and Settings/UserName/
Local Settings/Temporary Internet Files 下的Cookie文件,都是文本文件).
以后你每次請(qǐng)求的時(shí)候都會(huì)加上這個(gè)ID值,服務(wù)器端就可以知道是不是同一個(gè)
請(qǐng)求了.假如還不相信的話,你可以這樣做個(gè)試驗(yàn):
1.選擇一個(gè)你要用用戶(hù)名登錄的網(wǎng)站(最好是ASP的,如論壇).
2.先正常登錄一遍,確定可以登錄,再把瀏覽器關(guān)了)
3.選擇Internet選項(xiàng)(IE屬性頁(yè)),選擇隱藏選項(xiàng)卡,把設(shè)置調(diào)到最高,確定.
4.重新開(kāi)IE,登錄你剛才登錄過(guò)的站點(diǎn),怎么登都等不上去的.

2.Session和Cookie的關(guān)系
當(dāng)前維持會(huì)話狀態(tài)的途徑有且只有兩種種
第一種:Cookie,最常見(jiàn)的,95%以上的會(huì)話都是Cookie的功勞.
第二種:URL重寫(xiě),把SessionID附加到URL中,JSP實(shí)現(xiàn)了但用的不多.
假如你用過(guò)session,你可能很希奇:我們一般都是用session維持會(huì)話,這里怎么沒(méi)有?
答案很簡(jiǎn)單:上面兩種都是途徑,Session是我們的目的.
一句話概括Session和Cookie的關(guān)系:Cookie是維持Session最常見(jiàn)的一種途徑.

3.Cookie的過(guò)期和Session的超時(shí)
你可以自己設(shè)置Cookie的過(guò)期(其實(shí)是服務(wù)器替你設(shè)置的),假如你設(shè)置為用不過(guò)期,
以后就都不用再重新登陸了,假如這臺(tái)機(jī)器就你一個(gè)人用完全可以這樣設(shè)置,否則
最好不要這樣設(shè)置.假如你很長(zhǎng)時(shí)間沒(méi)有反應(yīng),就是沒(méi)有新的請(qǐng)求,Session就有可能
過(guò)期,你可能碰到這樣的情況:明明已經(jīng)登錄了,過(guò)了一會(huì)兒回來(lái)卻說(shuō)我沒(méi)有登錄
提示重新登錄.就是因?yàn)镾ession過(guò)期了,服務(wù)器可以設(shè)置過(guò)期的時(shí)間.

4.禁用了Cookie如何實(shí)現(xiàn)會(huì)話
假如客戶(hù)端完全禁用Cookie,將會(huì)發(fā)生什么現(xiàn)象:
對(duì)于ASP,無(wú)法跟蹤會(huì)話,也就是每個(gè)請(qǐng)求都當(dāng)作新的請(qǐng)求.
對(duì)于JSP,可以通過(guò)重寫(xiě)URL實(shí)現(xiàn)會(huì)話,session.encodeURL(String path)
session.encodeURL("index.jsp")=index.jsp;jsessionid=431D980051204FC8DC3
BF75840F7AF71
可以看到后面的sessionid并沒(méi)有包括在QueryString中(在?后面)
對(duì)于ASP.NET 同樣支持重寫(xiě)URL,學(xué)習(xí)JSP的,不過(guò)JSP并不是所有的WebServer都支持重寫(xiě)URL

5.QueryString和HiddenForm
你可能覺(jué)得他們也可以維持會(huì)話,但是事實(shí)上是不可以的,他們只能傳遞參數(shù)。不過(guò)
在ASP.NET中的服務(wù)器事件模型廣泛了使用了Hidden來(lái)表示控件的viewState(這個(gè)也是
ASP.NET比ASP,JSP先進(jìn)的地方,是一種全新的技術(shù))
為什么他們只能傳遞參數(shù)而不能實(shí)現(xiàn)會(huì)話呢?大致過(guò)程是這樣的:
服務(wù)器接收到一個(gè)請(qǐng)求,假如沒(méi)有獲得SessionID,就產(chǎn)生一個(gè)新的會(huì)話.可能你認(rèn)為這樣


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 章丘市| 五大连池市| 东乡| 类乌齐县| 兴宁市| 大冶市| 肇庆市| 如东县| 渝北区| 裕民县| 芜湖市| 东源县| 广州市| 安西县| 凤翔县| 永年县| 定襄县| 墨竹工卡县| 都兰县| 桦甸市| 永吉县| 河池市| 葵青区| 彭州市| 敦化市| 怀宁县| 庆阳市| 涞源县| 丽江市| 澄迈县| 翼城县| 岳阳市| 砀山县| 开江县| 余庆县| 辽阳市| 邢台市| 仁怀市| 丰宁| 通化市| 汉寿县|