JSP九大內建物件 session

cool_cool_coo1發表於2019-01-13

session (服務端)

Cookie (客戶端,不是內建物件)

Cookie是由 服務端生成的.再傳送給客戶端儲存。

相當於本地快取的作用: 客戶端(hello. mp4, zs/abc)->服務端(hello. mp4; zs/abc)

作用:提高訪問服務端的效率,但是安全性較差。

Cookie:name=value

javax. servlet.http.Cookie

  • public Cookie (String name, String value)
  • String getName(): 獲取name
  • String getValue() :獲取value
  • void setMaxAge(int expiry);最大有效期 (秒)

服務端準備Cookie:

  • response. addCookie (Cookie cookie)頁面跳轉(轉發,重定向)
  • 客戶端獲取cookie:request. getCookies() ;
  • a.服務端增加cookie :response物件; 客戶端獲取物件: request物件
  • b. 不能直接獲取某一個單獨物件,只能次性將 全部的cookie拿到

通過F12可以發現  除了自己設定的Cookie物件之外,還有一個名為JSESSIONID的cookie(和session相關)

3.使用cookie實現記住使用者名稱  功能

(建議cookie中只儲存英文、數字 ,否則需要進行編碼、解碼處理)

(cookie可以在客戶端多個瀏覽器共享)IE 火狐

保留時間:


  session :會話

  1.       a.瀏覽網站:開始-關閉
  2.       b.購物瀏覽、付款、退出
  3.       c.電子郵件:瀏覽、寫郵件、退出,開始-結束

      session機制:

      客戶端第一次請求服務端時,服務端會產生一個session物件 (用於儲存該客戶的資訊) ;並且每個session物件 都會有一一個唯的 sessionId( 用於區分其他session) ;

      服務端由會產生一個cookie, 並且該cookie的name= JSESSIONID , value=服務端sessionId的值;

      然後服務端會在響應客戶端的同時將該cookie傳送給客戶端,至此客戶端就有了一個cookie (JSESSIONID);

因此,客戶端的cookie就可以和服務端的session一一對應(JSESSIONID 一sessionID)

      客戶端第二/n次請求服務端時:服務端會先用客戶端cookie種的JSESSIONID 去服務端的session中匹配sessionid

如果匹配成功(cookie jsessionid和sesion sessionid) 說明此使用者不是第一次訪問

栗子:

客戶端:顧客

服務端:存包處   ——商場(服務端)

顧客第一次存包:商場判斷此人是否是之前已經存過包(通過手裡是否有鑰匙)

如果是新顧客(沒鑰匙),分配一個鑰匙給顧客;鑰匙會和櫃子 一一對應;

第二次/n次存包:商場判斷此人是否是之前已經存過包(通過手裡是否有鑰匙)

如果是老顧客(有鑰匙),不需要分配一個鑰匙給顧客;顧客手裡的鑰匙會和櫃子 自動一一對應;

session
a. session儲存在服務端
b. session是在同一個使用者(客戶)請求時共享
c. 實現機制:第次客戶請求時產生一個sessionid 並複製給cookie的jsessionid 然後發給客戶端。最終通session的sessionid—jsessionid 
session方法:
String getId() :獲取sessionId
boolean isNew() :判斷是否是新使用者(第一次訪問)void invalidate() :使session失效 (退出登入、登出)
setAttribute()getAttribute() ;
void setMaxInactiveInterval(秒) :設定最大有效非活動時間

int getMaxInactiveInterval () :獲取最大有效非活動時間

示例:

相關文章