點(diǎn)擊查看:2018計(jì)算機(jī)二級(jí)考試Web程序設(shè)計(jì)輔導(dǎo)知識(shí)點(diǎn)匯總
Web應(yīng)用程序狀態(tài)管理方式:
隱藏字段、Cookie、HttpSession、URL重寫
為什么需要狀態(tài)管理?
根本原因是由于Http協(xié)議是無狀態(tài)的造成的
什么是Cookie?原理?如何使用?
Cookie原理:
ession是一種保存上下文信息的機(jī)制,它是針對(duì)每一個(gè)用戶的,變量的值保存在服務(wù)器端,通過SessionID來區(qū)分不同的客戶,session是以Cookie或URL重寫為基礎(chǔ)。默認(rèn)使用Cookie來實(shí)現(xiàn),系統(tǒng)會(huì)創(chuàng)造一個(gè)名為JSESSIONID的輸出Cookie,或稱為SessionCookie,以區(qū)別PersistentCookies(通常所說的Cookie).SessionCookie是存儲(chǔ)在瀏覽器中,并不是寫在硬盤上的,但是把瀏覽器的Cookie禁止后,使用response對(duì)象的encodeURL或encodeRedirectURL方法編碼URL,WEB服務(wù)器會(huì)采URL重寫的方式傳遞Sessionid,用戶就可以在地址欄看到j(luò)sessionid=A09JHGHKHU68624309UTY84932之類的字符串。
通常SessionCookie是不能跨窗口使用,當(dāng)用戶新開了一個(gè)瀏覽器進(jìn)入相同的頁(yè)面時(shí),系統(tǒng)會(huì)賦予用戶一個(gè)新的SessionID,這樣信息共享的目的就達(dá)不到,此時(shí)可以把SessionID保存在PersistentCookie中,然后再新的窗口中讀出來,就可以得到上一個(gè)窗口的SessionID了,這樣通過SessionCookie和PersistentCookie的結(jié)合,實(shí)現(xiàn)了跨窗口的會(huì)話跟蹤。
Cookie和會(huì)話狀態(tài)
什么是Cookie?
Cookie是一小段文本信息,伴隨著用戶請(qǐng)求和頁(yè)面在Web服務(wù)器和瀏覽器之間傳遞。用戶每次訪問站點(diǎn)時(shí),Web應(yīng)用程序都可以讀取Cookie包含的信息。Cookie的基本工作原理如果用戶再次訪問站點(diǎn)上的頁(yè)面,當(dāng)該用戶輸入U(xiǎn)RLwww.*****.com時(shí),瀏覽器就會(huì)在本地硬盤上查找與該URL相關(guān)聯(lián)的Cookie。如果該Cookie存在,瀏覽器就將它與頁(yè)面請(qǐng)求一起發(fā)送到您的站點(diǎn)。
Cookie有哪些用途?
最根本的用途是:Cookie能夠幫助Web站點(diǎn)保存有關(guān)訪問者的信息。更概括地說,Cookie是一種保持Web應(yīng)用程序連續(xù)性(即執(zhí)行“狀態(tài)管理”)的方法.使Web站點(diǎn)記住您.
什么是會(huì)話Session?
當(dāng)用戶訪問您的站點(diǎn)時(shí),服務(wù)器會(huì)為該用戶創(chuàng)建唯一的會(huì)話,會(huì)話將一直延續(xù)到用戶訪問結(jié)束。
session的工作原理
就session的實(shí)現(xiàn)而言,好像是這樣的:
(1)當(dāng)有Session啟動(dòng)時(shí),服務(wù)器生成一個(gè)唯一值,稱為SessionID(好像是通過取進(jìn)程ID的方式取得的)。
(2)然后,服務(wù)器開辟一塊內(nèi)存,對(duì)應(yīng)于該SessionID。
(3)服務(wù)器再將該SessionID寫入瀏覽器的cookie(一些在網(wǎng)頁(yè)的源代碼中有所體現(xiàn))。
(4)服務(wù)器內(nèi)有一進(jìn)程,監(jiān)視所有Session的活動(dòng)狀況,如果有Session超時(shí)或是主動(dòng)關(guān)閉,服務(wù)器就釋放該內(nèi)存塊。
(5)當(dāng)瀏覽器連入IIS(服務(wù)器)時(shí)并請(qǐng)求的ASP(腳本語言)內(nèi)用到Session時(shí),IIS(服務(wù)器)就讀瀏覽器Cookie中的SessionID。
(6)然后,服務(wù)檢查該SessionID所對(duì)應(yīng)的內(nèi)存是否有效。
(7)如果有效,就讀出內(nèi)存中的值。
(8)如果無效,就建立新的Session。
注意:
(1)在大瀏覽量的網(wǎng)站,Session并不保險(xiǎn),我們過去的網(wǎng)站就經(jīng)常碰到存在Session中得值不正確(可能出現(xiàn)重復(fù)的SessionID)。
(2)SessionID不能從硬盤上的Cookie文件獲得,如果想在客戶端獲知自己的SessionID,只能通過Javascrīpt來讀取。
會(huì)話失效的三種情況(服務(wù)器重啟/關(guān)閉、會(huì)話超時(shí)(-1永不失效)、invalidate())
設(shè)置鍵值對(duì)setAttribute(key,value);Objectobj=getAttribute(key);
為什么需要URL重寫?Stringstr=HttpServletResponse.encodeURL(Stringurl);url;jsessionid=sessionid
對(duì)于搜索引擎而言,在主觀上對(duì)靜態(tài)頁(yè)面和動(dòng)態(tài)頁(yè)面并沒有特殊的好惡,只是很多動(dòng)態(tài)頁(yè)面的參數(shù)機(jī)制不利于搜索引擎收錄,而靜態(tài)頁(yè)面更容易收錄而已。此外,頁(yè)面靜態(tài)化在一定程度上也提高了頁(yè)面訪問速度和系統(tǒng)性能及穩(wěn)定性—-這使得在搜索引擎優(yōu)化上面,為使得效果更加明顯,問題簡(jiǎn)單快速解決,大家對(duì)站點(diǎn)的靜態(tài)化非常的看重。
URL應(yīng)當(dāng)是用戶友好的;
URL應(yīng)當(dāng)是可讀的;
URL應(yīng)當(dāng)是可預(yù)測(cè)的;
URL應(yīng)當(dāng)是統(tǒng)一的;
URL面向搜索引擎是友好的;
微信搜索"考試吧"了解更多考試資訊、下載備考資料
相關(guān)推薦:
2018年9月全國(guó)計(jì)算機(jī)等級(jí)考試試題匯總(各科目)
2018年全國(guó)計(jì)算機(jī)等級(jí)考試必做試題匯總(各科目)
2018年全國(guó)計(jì)算機(jī)等級(jí)考試復(fù)習(xí)知識(shí)點(diǎn)匯總(各科目)
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |