更新時間:2019-01-10 來源:黑馬程序員 瀏覽量:
會話技術 :
1)會話概念 : 一次會話中包含多次請求和響應.
*一次會話 :瀏覽器第一次給服務器資源發送請求,會話建立,知道有一方斷開為止
*會話功能 :再一次會話的范圍內的多次請求間 , 共享數據
*會話可以應用在購物車(Cookie)
*方式 :
//客戶端會話技術 : Cookie
//服務器端會話技術 : Seesion
Cookie
1)概念 : 客戶端會話技術,將數據保存在客戶端
2)快速入門 :
*使用步驟 :
1.創建Cookie 對象,綁定數據
-new Cookie(String name,String value)
2.發送Cookie對象
-response.addCookie(Cookie cookie)
3.獲取Cookie,拿到數據
-Cookie[] ->Request.getCookies()
*如果服務器創建cookie后并且把cookie回寫到瀏覽器后,cookie或保存在瀏覽器,后續瀏覽器發送請求訪問該服務器項目時會默認攜帶之前的cookie
*cookie 是借助頭信息(請求頭->cookie,響應頭->set-cookie)傳遞的
3)實現原理
*第一次訪問服務器的時候,不會攜帶任何cookie
*如果服務器接收到請求后回寫數據的時候如果添加了cookie后,response會通過響應頭setCookie把Cookie以 key=value的形式把cookie 回寫到瀏覽器
*瀏覽器在接收到cookie之后,會把cookie保存到本地
*在瀏覽器為不關閉的情況下,再次訪問原服務器項目時會把cookie攜帶到服務器,通過請求頭(cookie --> key = value)
4)Cookie的細節
一次可不可以發送多個Cookie ? --> 可以
解 : 創建多個Cookie對象,使用response調用多次addcookie方法發送Cookie即可
特點 : Cookie只有通過response.addCookie()的形式才能把Cookie發送到瀏覽器
Cookie在瀏覽器中保存多長時間?
(1)默認情況下,當瀏覽器關閉后,Cookie數據被銷毀
(2)設置cookie生命周期, 持久化存儲
*setMaxAge(int seconds)
-整數 : 將Cookie數據寫到硬盤的文件中,持久化存儲,Cookie存活時間
-負數 : 默認值
-0 : 刪除Cookie信息
Cookie能不能存中文呢?不管支不支持都不要去存中文
(1)在tomcat8之前cookie中不能直接存儲中文數據
*需要中文數據轉碼 --> 一般使用URL編碼,
*如果進行編碼,后面必須解碼
(2)在tomcat8之后才支持存儲中文
Cookie獲取范圍是多大?
(1)假設在一個tomcat服務器中,部署了多個web項目,name在這些web項目中cookie能不能共享?
*默認情況下cookie不能共享
*setPath("/虛擬路徑") :設置cookie的獲取范圍,默認情況下設置當前的虛擬目錄
*如果要共享,則可以將path設置為" / "(代表當前項目的根路徑)
(2)不同的tomcat服務器間cookie共享問題?
*setDomain(".域名");如果設置一級域名相同,那么兩個服務器之間cookie可以共享了
Cookie的有效路徑
/ --> 當前服務器下所有項目共享
/虛擬路徑 --> 當前服務器下當前項目共享
/虛擬路徑/user/b --> 只在 /虛擬路徑/user/b 路徑下有效
/虛擬路徑/user/ --> /虛擬路徑/user/ 下的所有資源有效
Cookie的特點
1)cookie 存儲數據在客戶端瀏覽器
2)瀏覽器對于單個cookie大小有限制(一般4KB左右),以及 對統一域名下的總cookie數量也有限制(20個以內)
*作用 :
-->cookie一般用于存儲少量的不太敏感的數據到瀏覽器
-->在不登錄的情況下,完成一個服務器對客戶端的身份識別
JSP(本質是一個servlet) : 執行java代碼的html
1)概念 :
*Java Server Pages : Java服務器端頁面
*可以理解為 : 一個特殊的頁面,其中既可以定義html標簽,又可以定義java代碼
*簡化書寫
2)原理 :
*JSP本質上就是一個servlet
*jsp_Servlet()會把html代碼通過內置out對象進行輸出到頁面從而進行解析
3)Jsp的腳本 : 定義Java代碼的方式
1.<% java代碼%> : 定義的java代碼在Service方法中。service可以定義什么,該腳本就可以定義什么
2.<%!java代碼%>:定義的java代碼。在jsp轉換后的java類的成員位置
3.<%=java代碼%>:定義的java代碼會輸出到頁面上,輸出語句中可以頂什么該語句中就可以定義什么
4)JSP的內置對象
*在jsp中不需要創建或者獲取,可以直接使用的對象
*jsp一共有9個內置對象
*out :JspWriter字符輸出流.可以將數據輸出到頁面上reponsegetWriter()類似
*reponse :
*request :
*application : SelectContext
*session : httpSession
*pageContext :PageContext
*config :ServletConfig
*page : Object 當前頁面
*exception :Throwable