欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Cookie和Session專(zhuān)題
一、cookie機制和session機制的區別
*************************************************************************************
具體來(lái)說(shuō)cookie機制采用的是在客戶(hù)端保持狀態(tài)的方案,而session機制采用的是在服務(wù)器端保持狀態(tài)的方案。
同時(shí)我們也看到,由于才服務(wù)器端保持狀態(tài)的方案在客戶(hù)端也需要保存一個(gè)標識,所以session
機制可能需要借助于cookie機制來(lái)達到保存標識的目的,但實(shí)際上還有其他選擇
*************************************************************************************

二、會(huì )話(huà)cookie和持久cookie的區別
*************************************************************************************
如果不設置過(guò)期時(shí)間,則表示這個(gè)cookie生命周期為瀏覽器會(huì )話(huà)期間,只要關(guān)閉瀏覽器窗口,cookie就消失了。這種生命期為瀏覽會(huì )話(huà)期的cookie被稱(chēng)為會(huì )話(huà)cookie。會(huì )話(huà)cookie一般不保存在硬盤(pán)上而是保存在內存里。
  如果設置了過(guò)期時(shí)間,瀏覽器就會(huì )把cookie保存到硬盤(pán)上,關(guān)閉后再次打開(kāi)瀏覽器,這些cookie依然有效直到超過(guò)設定的過(guò)期時(shí)間。
  存儲在硬盤(pán)上的cookie可以在不同的瀏覽器進(jìn)程間共享,比如兩個(gè)IE窗口。而對于保存在內存的cookie,不同的瀏覽器有不同的處理方式。
*************************************************************************************

三、如何利用實(shí)現自動(dòng)登錄
*************************************************************************************
  當用戶(hù)在某個(gè)網(wǎng)站注冊后,就會(huì )收到一個(gè)惟一用戶(hù)ID的cookie??蛻?hù)后來(lái)重新連接時(shí),這個(gè)
用戶(hù)ID會(huì )自動(dòng)返回,服務(wù)器對它進(jìn)行檢查,確定它是否為注冊用戶(hù)且選擇了自動(dòng)登錄,從而使用戶(hù)務(wù)需給出明確的用戶(hù)名和密碼,就可以訪(fǎng)問(wèn)服務(wù)器上的資源。
*************************************************************************************

四、如何根據用戶(hù)的愛(ài)好定制站點(diǎn)
*************************************************************************************
  網(wǎng)站可以使用cookie記錄用戶(hù)的意愿。對于簡(jiǎn)單的設置,網(wǎng)站可以直接將頁(yè)面的設置存儲在cookie中完成定制。然而對于更復雜的定制,網(wǎng)站只需僅將一個(gè)惟一的標識符發(fā)送給用戶(hù),由服務(wù)器端的數據庫存儲每個(gè)標識符對應的頁(yè)面設置。
*************************************************************************************

五、cookie的發(fā)送
*************************************************************************************
1.創(chuàng )建Cookie對象
2.設置最大時(shí)效
3.將Cookie放入到HTTP響應報頭
如果你創(chuàng )建了一個(gè)cookie,并將他發(fā)送到瀏覽器,默認情況下它是一個(gè)會(huì )話(huà)級別的cookie:存儲在瀏覽器的內存中,用戶(hù)退出瀏覽器之后被刪除。如果你希望瀏覽器將該cookie存儲在磁盤(pán)上,則
需要使用maxAge,并給出一個(gè)以秒為單位的時(shí)間。將最大時(shí)效設為0則是命令瀏覽器刪除該cookie。
發(fā)送cookie需要使用HttpServletResponse的addCookie方法,將cookie插入到一個(gè)Set-Cookie HTTP請求報頭中。由于這個(gè)方法并不修改任何之前指定的Set-Cookie報頭,而是創(chuàng )建新的報頭,因此我們將這個(gè)方法稱(chēng)為是addCookie,而非setCookie。同樣要記住響應報頭必須在任何文檔內容發(fā)送到客戶(hù)端之前設置。

六、cookie的讀取
*************************************************************************************
1.調用request.getCookie
要獲取有瀏覽器發(fā)送來(lái)的cookie,需要調用HttpServletRequest的getCookies方法,這個(gè)調用返回Cookie對象的數組,對應由HTTP請求中Cookie報頭輸入的值。
2.對數組進(jìn)行循環(huán),調用每個(gè)cookie的getName方法,直到找到感興趣的cookie為止
 cookie與你的主機(域)相關(guān),而非你的servlet或JSP頁(yè)面。因而,盡管你的servlet可能只發(fā)送了單個(gè)cookie,你也可能會(huì )得到許多不相關(guān)的cookie。
例如:
  String cookieName = “userID”;
    Cookie cookies[] = request.getCookies();
    if (cookies!=null){
        for(int i=0;i<cookies.length;i++){
    Cookie cookie = cookies[i];
    if (cookieName.equals(cookie.getName())){
        doSomethingWith(cookie.getValue());
}
}
}
*************************************************************************************

七、如何使用cookie檢測初訪(fǎng)者
*************************************************************************************
A.調用HttpServletRequest.getCookies()獲取Cookie數組
B.在循環(huán)中檢索指定名字的cookie是否存在以及對應的值是否正確
C.如果是則退出循環(huán)并設置區別標識
D.根據區別標識判斷用戶(hù)是否為初訪(fǎng)者從而進(jìn)行不同的操作
*************************************************************************************

八、使用cookie檢測初訪(fǎng)者的常見(jiàn)錯誤
*************************************************************************************
不能僅僅因為cookie數組中不存在在特定的數據項就認為用戶(hù)是個(gè)初訪(fǎng)者。如果cookie數組為null,客戶(hù)可能是一個(gè)初訪(fǎng)者,也可能是由于用戶(hù)將cookie刪除或禁用造成的結果。
但是,如果數組非null,也不過(guò)是顯示客戶(hù)曾經(jīng)到過(guò)你的網(wǎng)站或域,并不能說(shuō)明他們曾經(jīng)訪(fǎng)問(wèn)過(guò)你的servlet。其它servlet、JSP頁(yè)面以及非Java Web應用都可以設置cookie,依據路徑的設置,其中的任何cookie都有可能返回給用戶(hù)的瀏覽器。
正確的做法是判斷cookie數組是否為空且是否存在指定的Cookie對象且值正確。
*************************************************************************************

九、使用cookie屬性的注意問(wèn)題
*************************************************************************************
  屬性是從服務(wù)器發(fā)送到瀏覽器的報頭的一部分;但它們不屬于由瀏覽器返回給服務(wù)器的報頭?!?br>  因此除了名稱(chēng)和值之外,cookie屬性只適用于從服務(wù)器輸出到客戶(hù)端的cookie;服務(wù)器端來(lái)自于瀏覽器的cookie并沒(méi)有設置這些屬性?!?br>  因而不要期望通過(guò)request.getCookies得到的cookie中可以使用這個(gè)屬性。這意味著(zhù),你不能僅僅通過(guò)設置cookie的最大時(shí)效,發(fā)出它,在隨后的輸入數組中查找適當的cookie,讀取它的值,修改它并將它存回Cookie,從而實(shí)現不斷改變的cookie值。
*************************************************************************************

十、如何使用cookie記錄各個(gè)用戶(hù)的訪(fǎng)問(wèn)計數
*************************************************************************************
1.獲取cookie數組中專(zhuān)門(mén)用于統計用戶(hù)訪(fǎng)問(wèn)次數的cookie的值
2.將值轉換成int型
3.將值加1并用原來(lái)的名稱(chēng)重新創(chuàng )建一個(gè)Cookie對象
4.重新設置最大時(shí)效
5.將新的cookie輸出
*************************************************************************************

十一、session在不同環(huán)境下的不同含義
*************************************************************************************
session,中文經(jīng)常翻譯為會(huì )話(huà),其本來(lái)的含義是指有始有終的一系列動(dòng)作/消息,比如打電話(huà)是從拿起電話(huà)撥號到掛斷電話(huà)這中間的一系列過(guò)程可以稱(chēng)之為一個(gè)session。
然而當session一詞與網(wǎng)絡(luò )協(xié)議相關(guān)聯(lián)時(shí),它又往往隱含了“面向連接”和/或“保持狀態(tài)”這樣兩個(gè)含義。
  session在Web開(kāi)發(fā)環(huán)境下的語(yǔ)義又有了新的擴展,它的含義是指一類(lèi)用來(lái)在客戶(hù)端與服務(wù)器端之間保持狀態(tài)的解決方案。有時(shí)候Session也用來(lái)指這種解決方案的存儲結構。
*************************************************************************************

十二、session的機制
*************************************************************************************
  session機制是一種服務(wù)器端的機制,服務(wù)器使用一種類(lèi)似于散列表的結構(也可能就是使用散列表)來(lái)保存信息。
但程序需要為某個(gè)客戶(hù)端的請求創(chuàng )建一個(gè)session的時(shí)候,服務(wù)器首先檢查這個(gè)客戶(hù)端的請求里是否包含了一個(gè)session標識-稱(chēng)為session id,如果已經(jīng)包含一個(gè)session id則說(shuō)明以前已經(jīng)為此客戶(hù)創(chuàng )建過(guò)session,服務(wù)器就按照session id把這個(gè)session檢索出來(lái)使用(如果檢索不到,可能會(huì )新建一個(gè),這種情況可能出現在服務(wù)端已經(jīng)刪除了該用戶(hù)對應的session對象,但用戶(hù)人為地在請求的URL后面附加上一個(gè)JSESSION的參數)。
如果客戶(hù)請求不包含session id,則為此客戶(hù)創(chuàng )建一個(gè)session并且生成一個(gè)與此session相關(guān)聯(lián)的session id,這個(gè)session id將在本次響應中返回給客戶(hù)端保存。
*************************************************************************************

十三、保存session id的幾種方式
*************************************************************************************
A.保存session id的方式可以采用cookie,這樣在交互過(guò)程中瀏覽器可以自動(dòng)的按照規則把這個(gè)標識發(fā)送給服務(wù)器。
B.由于cookie可以被人為的禁止,必須有其它的機制以便在cookie被禁止時(shí)仍然能夠把session id傳遞回服務(wù)器,經(jīng)常采用的一種技術(shù)叫做URL重寫(xiě),就是把session id附加在URL路徑的后面,附加的方式也有兩種,一種是作為URL路徑的附加信息,另一種是作為查詢(xún)字符串附加在URL后面。網(wǎng)絡(luò )在整個(gè)交互過(guò)程中始終保持狀態(tài),就必須在每個(gè)客戶(hù)端可能請求的路徑后面都包含這個(gè)session id。
C.另一種技術(shù)叫做表單隱藏字段。就是服務(wù)器會(huì )自動(dòng)修改表單,添加一個(gè)隱藏字段,以便在表單提交時(shí)能夠把session id傳遞回服務(wù)器。
*************************************************************************************

十四、session什么時(shí)候被創(chuàng )建
*************************************************************************************
一個(gè)常見(jiàn)的錯誤是以為session在有客戶(hù)端訪(fǎng)問(wèn)時(shí)就被創(chuàng )建,然而事實(shí)是直到某server端程序(如Servlet)調用HttpServletRequest.getSession(true)這樣的語(yǔ)句時(shí)才會(huì )被創(chuàng )建。
*************************************************************************************

十五、session何時(shí)被刪除
*************************************************************************************
session在下列情況下被刪除:
A.程序調用HttpSession.invalidate()
B.距離上一次收到客戶(hù)端發(fā)送的session id時(shí)間間隔超過(guò)了session的最大有效時(shí)間
C.服務(wù)器進(jìn)程被停止

再次注意關(guān)閉瀏覽器只會(huì )使存儲在客戶(hù)端瀏覽器內存中的session cookie失效,不會(huì )使服務(wù)器端的session對象失效。
*************************************************************************************

十六、URL重寫(xiě)有什么缺點(diǎn)
*************************************************************************************
   對所有的URL使用URL重寫(xiě),包括超鏈接,form的action,和重定向的URL。每個(gè)引用你的站點(diǎn)的URL,以及那些返回給用戶(hù)的URL(即使通過(guò)間接手段,比如服務(wù)器重定向中的Location字段)都要添加額外的信息。
   這意味著(zhù)在你的站點(diǎn)上不能有任何靜態(tài)的HTML頁(yè)面(至少靜態(tài)頁(yè)面中不能有任何鏈接到站點(diǎn)動(dòng)態(tài)頁(yè)面的鏈接)。因此,每個(gè)頁(yè)面都必須使用servlet或JSP動(dòng)態(tài)生成。即使所有的頁(yè)面都動(dòng)態(tài)生成,如果用戶(hù)離開(kāi)了會(huì )話(huà)并通過(guò)書(shū)簽或鏈接再次回來(lái),會(huì )話(huà)的信息都會(huì )丟失,因為存儲下來(lái)的鏈接含有錯誤的標識信息-該URL后面的SESSION ID已經(jīng)過(guò)期了?! ?br>*************************************************************************************

十七、使用隱藏的表單域有什么缺點(diǎn)
*************************************************************************************
    僅當每個(gè)頁(yè)面都是有表單提交而動(dòng)態(tài)生成時(shí),才能使用這種方法。單擊常規的<A HREF..>超文本鏈接并不產(chǎn)生表單提交,因此隱藏的表單域不能支持通常的會(huì )話(huà)跟蹤,只能用于一系列特定的操作中,比如在線(xiàn)商店的結賬過(guò)程
*************************************************************************************

十八、會(huì )話(huà)跟蹤的基本步驟
*************************************************************************************
1.訪(fǎng)問(wèn)與當前請求相關(guān)的會(huì )話(huà)對象
2.查找與會(huì )話(huà)相關(guān)的信息
3.存儲會(huì )話(huà)信息
4.廢棄會(huì )話(huà)數據
*************************************************************************************

十九、getSession()/getSession(true)、getSession(false)的區別
*************************************************************************************
getSession()/getSession(true):當session存在時(shí)返回該session,否則新建一個(gè)session并返回該對象
getSession(false):當session存在時(shí)返回該session,否則不會(huì )新建session,返回null
*************************************************************************************

二十、如何將信息于會(huì )話(huà)關(guān)聯(lián)起來(lái)
*************************************************************************************
  setAttribute會(huì )替換任何之前設定的值;如果想要在不提供任何代替的情況下移除某個(gè)值,則應使用removeAttribute。這個(gè)方法會(huì )觸發(fā)所有實(shí)現了HttpSessionBindingListener接口的值的valueUnbound
方法。
*************************************************************************************

二十一、會(huì )話(huà)屬性的類(lèi)型有什么限制嗎
*************************************************************************************
通常會(huì )話(huà)屬性的類(lèi)型只要是Object就可以了。除了null或基本類(lèi)型,如int,double,boolean。
如果要使用基本類(lèi)型的值作為屬性,必須將其轉換為相應的封裝類(lèi)對象
*************************************************************************************

二十二、如何廢棄會(huì )話(huà)數據
*************************************************************************************
A.只移除自己編寫(xiě)的servlet創(chuàng )建的數據:
   調用removeAttribute(“key”)將指定鍵關(guān)聯(lián)的值廢棄
B.刪除整個(gè)會(huì )話(huà)(在當前Web應用中):
   調用invalidate,將整個(gè)會(huì )話(huà)廢棄掉。這樣做會(huì )丟失該用戶(hù)的所有會(huì )話(huà)數據,而非僅僅由我們
servlet或JSP頁(yè)面創(chuàng )建的會(huì )話(huà)數據
C.將用戶(hù)從系統中注銷(xiāo)并刪除所有屬于他(或她)的會(huì )話(huà)
   調用logOut,將客戶(hù)從Web服務(wù)器中注銷(xiāo),同時(shí)廢棄所有與該用戶(hù)相關(guān)聯(lián)的會(huì )話(huà)(每個(gè)Web應用至多一個(gè))。這個(gè)操作有可能影響到服務(wù)器上多個(gè)不同的Web應用
*************************************************************************************

二十三、使用isNew來(lái)判斷用戶(hù)是否為新舊用戶(hù)的錯誤做法
*************************************************************************************
public boolean isNew()方法如果會(huì )話(huà)尚未和客戶(hù)程序(瀏覽器)發(fā)生任何聯(lián)系,則這個(gè)方法返回true,這一般是因為會(huì )話(huà)是新建的,不是由輸入的客戶(hù)請求所引起的。
但如果isNew返回false,只不過(guò)是說(shuō)明他之前曾經(jīng)訪(fǎng)問(wèn)該Web應用,并不代表他們曾訪(fǎng)問(wèn)過(guò)我們的servlet或JSP頁(yè)面。
因為session是與用戶(hù)相關(guān)的,在用戶(hù)之前訪(fǎng)問(wèn)的每一個(gè)頁(yè)面都有可能創(chuàng )建了會(huì )話(huà)。因此isNew為false只能說(shuō)用戶(hù)之前訪(fǎng)問(wèn)過(guò)該Web應用,session可以是當前頁(yè)面創(chuàng )建,也可能是由用戶(hù)之前訪(fǎng)問(wèn)過(guò)的頁(yè)面創(chuàng )建的。
正確的做法是判斷某個(gè)session中是否存在某個(gè)特定的key且其value是否正確
*************************************************************************************

二十四、Cookie的過(guò)期和Session的超時(shí)有什么區別
*************************************************************************************
會(huì )話(huà)的超時(shí)由服務(wù)器來(lái)維護,它不同于Cookie的失效日期。首先,會(huì )話(huà)一般基于駐留內存的cookie
不是持續性的cookie,因而也就沒(méi)有截至日期。即使截取到JSESSIONID cookie,并為它設定一個(gè)失效日期發(fā)送出去。瀏覽器會(huì )話(huà)和服務(wù)器會(huì )話(huà)也會(huì )截然不同。
*************************************************************************************

二十五、session cookie和session對象的生命周期是一樣的嗎
*************************************************************************************
當用戶(hù)關(guān)閉了瀏覽器雖然session cookie已經(jīng)消失,但session對象仍然保存在服務(wù)器端
*************************************************************************************

二十六、是否只要關(guān)閉瀏覽器,session就消失了
*************************************************************************************
程序一般都是在用戶(hù)做log off的時(shí)候發(fā)個(gè)指令去刪除session,然而瀏覽器從來(lái)不會(huì )主動(dòng)在關(guān)閉之前通知服務(wù)器它將要被關(guān)閉,因此服務(wù)器根本不會(huì )有機會(huì )知道瀏覽器已經(jīng)關(guān)閉。服務(wù)器會(huì )一直保留這個(gè)會(huì )話(huà)對象直到它處于非活動(dòng)狀態(tài)超過(guò)設定的間隔為止。
之所以會(huì )有這種錯誤的認識,是因為大部分session機制都使用會(huì )話(huà)cookie來(lái)保存session id,而關(guān)閉瀏覽器后這個(gè)session id就消失了,再次連接到服務(wù)器時(shí)也就無(wú)法找到原來(lái)的session。
如果服務(wù)器設置的cookie被保存到硬盤(pán)上,或者使用某種手段改寫(xiě)瀏覽器發(fā)出的HTTP請求報頭,把原來(lái)的session id發(fā)送到服務(wù)器,則再次打開(kāi)瀏覽器仍然能夠找到原來(lái)的session。
恰恰是由于關(guān)閉瀏覽器不會(huì )導致session被刪除,迫使服務(wù)器為session設置了一個(gè)失效時(shí)間,當距離客戶(hù)上一次使用session的時(shí)間超過(guò)了這個(gè)失效時(shí)間時(shí),服務(wù)器就可以認為客戶(hù)端已經(jīng)停止了活動(dòng),才會(huì )把session刪除以節省存儲空間。
  由此我們可以得出如下結論:
  關(guān)閉瀏覽器,只會(huì )是瀏覽器端內存里的session cookie消失,但不會(huì )使保存在服務(wù)器端的session對象消失,同樣也不會(huì )使已經(jīng)保存到硬盤(pán)上的持久化cookie消失。
*************************************************************************************


二十七、打開(kāi)兩個(gè)瀏覽器窗口訪(fǎng)問(wèn)應用程序會(huì )使用同一個(gè)session還是不同的session
*************************************************************************************
通常session cookie是不能跨窗口使用的,當你新開(kāi)了一個(gè)瀏覽器窗口進(jìn)入相同頁(yè)面時(shí),系統會(huì )賦予你一個(gè)新的session id,這樣我們信息共享的目的就達不到了。
此時(shí)我們可以先把session id保存在persistent cookie中(通過(guò)設置session的最大有效時(shí)間),然后在新窗口中讀出來(lái),就可以得到上一個(gè)窗口的session id了,這樣通過(guò)session cookie和persistent cookie的結合我們就可以實(shí)現了跨窗口的會(huì )話(huà)跟蹤。
*************************************************************************************

二十八、如何使用會(huì )話(huà)顯示每個(gè)客戶(hù)的訪(fǎng)問(wèn)次數
*************************************************************************************
由于客戶(hù)的訪(fǎng)問(wèn)次數是一個(gè)整型的變量,但session的屬性類(lèi)型中不能使用int,double,boolean等基本類(lèi)型的變量,所以我們要用到這些基本類(lèi)型的封裝類(lèi)型對象作為session對象中屬性的值
  但像Integer是一種不可修改(Immutable)的數據結構:構建后就不能更改。這意味著(zhù)每個(gè)請求都必須創(chuàng )建新的Integer對象,之后使用setAttribute來(lái)代替之前存在的老的屬性的值。例如:
HttpSession session = request.getSession();
SomeImmutalbeClass value = (SomeImmutableClass)session.getAttribute(“SomeIdentifier”);
if (value= =null){
    value = new SomeImmutableClass(…); // 新創(chuàng )建一個(gè)不可更改對象
}else{
    value = new SomeImmutableClass(calculatedFrom(value)); // 對value重新計算后創(chuàng )建新的對象
}
session.setAttribute(“someIdentifier”,value); // 使用新創(chuàng )建的對象覆蓋原來(lái)的老的對象
*************************************************************************************

二十九、如何使用會(huì )話(huà)累計用戶(hù)的數據
*************************************************************************************
使用可變的數據結構,比如數組、List、Map或含有可寫(xiě)字段的應用程序專(zhuān)有的數據結構。通過(guò)這種方式,除非首次分配對象,否則不需要調用setAttribute。例如

HttpSession session = request.getSession();
SomeMutableClass value = (SomeMutableClass)session.getAttribute(“someIdentifier”);
if(value = = null){
    value = new SomeMutableClass(…);
    session.setAttribute(“someIdentifier”,value);
}else{
    value.updateInternalAttribute(…);     // 如果已經(jīng)存在該對象則更新其屬性而不需重新設置屬性
}
*************************************************************************************

三十、不可更改對象和可更改對象在會(huì )話(huà)數據更新時(shí)的不同處理
*************************************************************************************
不可更改對象因為一旦創(chuàng )建之后就不能更改,所以每次要修改會(huì )話(huà)中屬性的值的時(shí)候,都需要
調用setAttribute(“someIdentifier”,newValue)來(lái)代替原有的屬性的值,否則屬性的值不會(huì )被更新
可更改對象因為其自身一般提供了修改自身屬性的方法,所以每次要修改會(huì )話(huà)中屬性的值的時(shí)
候,只要調用該可更改對象的相關(guān)修改自身屬性的方法就可以了。這意味著(zhù)我們就不需要調
用setAttribute方法了
*************************************************************************************

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
會(huì )話(huà)跟蹤技術(shù):會(huì )話(huà)Cookie,URL重寫(xiě)和HttpSession
深入理解Servlet/JSP之“Cookie和Session原理”
Session那些事(一)
java
HttpSession和jsp中session的區別
Servlet學(xué)習筆記
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久