1
response :響應對象
提供的方法:
void addCookie( Cookie cookie ); 服務端向客戶端增加cookie對象
void sendRedirect(String location ) throws IOException; :頁面跳轉的一種方式(重定向)
void setContetType(String type):設置服務端響應的編碼(設置服務端的contentType類型)
示例:登陸
login.jsp -> check.jsp ->success.jsp
請求轉發 重定向
地址欄是否改變 不變(check.jsp) 改變(success.jsp)
是否保留第一次 保留 不保留 --4種范圍對象
請求時的數據
請求的次數 1 2
跳轉發生的位置 服務端 客戶端發出的第二次跳轉
轉發、重定向:
轉發:
張三(客戶端) -> 【 服務窗口 A (服務端 ) -> 服務窗口B 】
重定向:
張三(客戶端) -> 服務窗口 A (服務端 ) ->去找B
張三(客戶端) -> 服務窗口 B (服務端 ) ->結束
2. 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對象外,還有一個name為 JSESSIONID的cookie
建議 cookie只保存 英文數字,否則需要進行編碼、解碼
3. 使用Cookie實現 記住用戶名 功能
4.session :會話
a.瀏覽網站:開始-關閉
b.購物: 瀏覽、付款、退出
c.電子郵件:瀏覽、寫郵件、退出
開始-結束
session機制:
客戶端第一次請求服務端時,(jsessionid-sessionid)服務端會產生一個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次 存包:商場 判斷此人是 之前已經存過包(通過你手里是否有鑰匙)
如果是老顧客(有鑰匙),則不需要分配;該顧客手里的鑰匙 會 和櫃子 自動一一對應。