Servlet規範之會話:Session和Cookie

來源:互聯網
上載者:User
零、Servlet規範API核心類圖一、會話概述1、什麼是會話?如同打電話2、會話過程中主要解決的問題是什嗎?保持用戶端各自的會話資料(最典型的就是購物)3、解決辦法:Cookie:用戶端技術.Set-Cookie回應標頭和Cookie的要求標頭HttpSession:伺服器端技術。伺服器為每一個客戶瀏覽器建立一個HttpSession對象。二、Cookie1、Cookie的屬性:name:名稱。必須的value:值。必須的path:路徑。可選的。預設值寫cookie的那個程式的訪問路徑。假如:向用戶端寫cookie的程式是:http://localhost:8080/day06/servlet/CookieDemo1他的預設path:/day06/servlet路徑的特點:當訪問的資源地址是:http://www.itcast.cn/index.jsp  剛才寫的cookie瀏覽器會不會帶給伺服器。不會(網域名稱不一樣)當訪問的資源地址是:http://localhost:8080/day06/abc/a.jsp 剛才寫的cookie瀏覽器會不會帶給伺服器。不會(路徑不一樣)當訪問的資源地址是:http://localhost:8080/day06/a.jsp 剛才寫的cookie瀏覽器會不會帶給伺服器。不會(路徑不一樣)當訪問的資源地址是:http://localhost:8080/day06/servlet/a/a.jsp 剛才寫的cookie瀏覽器會不會帶給伺服器。會(startWith為true)因此:如果一個Cookie的路徑設定為了"/day06",意味著day06這個應用中得所有資源都可以訪問到該Cookie。domain:域。可選的。預設值寫cookie的那個網站。假如:向用戶端寫cookie的程式是:http://localhost:8080/day06/servlet/CookieDemo1他的網域名稱就是:localhostmaxAge:最大存活時間。可選的.預設是會話範圍(cookie存在瀏覽器的記憶體中)。單位是秒。刪除,設定時間為0.刪除的cookie的path要注意。comment:注釋.可選的。version:版本號碼。可選的。2、伺服器向用戶端寫CookieHttpServletResponse.addCookie(Cookie c)瀏覽器對一個網站最多支援20個Cookie。所有的Cookie個數最多支援300個。每個Cookie的大小不能超過4Kb。3、伺服器端擷取用戶端帶來的CookieCookie[]  cs = HttpServletRequest.getCookies()如何唯一確定一個Cookie:domain+path+name4、刪除用戶端指定的cookie:定位要刪除的cookie。把MaxAge改為0,就是刪除該Cookie。注意:cookie不能使用中文(目前)三、Cookie案例:3個案例四、HttpSession原理1、HttpSession對象由伺服器建立並儲存在伺服器的記憶體中。2、HttpSession對象本身是一個域對象(內部維護了一個Map)void setAttribute(String key,Object obj)Object getAttribute(String key)void removeAttribute(String key) 3、建立HttpSession的方法: HttpSession HttpServletRequest.getSession():先尋找屬於你的HttpSession對象,沒有才建立。有就是擷取。HttpSession HttpServletRequest.getSession(boolean b):如果b為true,與getSession()相同;如果b為false,只擷取,若沒有對應的HttpSession對象,返回null。 4、原理 伺服器把HttpSession對象的ID(伺服器負責產生且唯一的),以Cookie的形式(name是JSESSIONID,value是HttpSession的ID)寫給用戶端。 該Cookie的生命週期預設是瀏覽器進程;預設的path是當前應用。如果吧path改為應用的某一個目錄下,session的範圍是否變化。JSP中的session響應:Set-Cookie: JSESSIONID=CFA3C1B6690391EBD8686C55D3540B2B; Path=/day06請求:Cookie: JSESSIONID=CFA3C1B6690391EBD8686C55D3540B2B五、HttpSession對象的狀態1、伺服器端的HttpSession對象只有2中可能才會被銷毀:a、逾時:預設30分鐘。通過web.xml可以進行配置<session-config><session-timeout>1</session-timeout><!--單位是分鐘--></session-config>b、調用了HttpSession的invalidate()方法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.