首頁技術文章正文

Cookie會話相關知識點

更新時間:2019-01-10 來源:黑馬程序員 瀏覽量:

  會話技術 :

  1)會話概念 : 一次會話中包含多次請求和響應.

  *一次會話 :瀏覽器第一次給服務器資源發(fā)送請求,會話建立,知道有一方斷開為止

  *會話功能 :再一次會話的范圍內的多次請求間 , 共享數據

  *會話可以應用在購物車(Cookie)

  *方式 :

  //客戶端會話技術 : Cookie

  //服務器端會話技術 : Seesion

  Cookie

  1)概念 : 客戶端會話技術,將數據保存在客戶端

  2)快速入門 :

  *使用步驟 :

  1.創(chuàng)建Cookie 對象,綁定數據

  -new Cookie(String name,String value)

  2.發(fā)送Cookie對象

  -response.addCookie(Cookie cookie)

  3.獲取Cookie,拿到數據

  -Cookie[] ->Request.getCookies()

  *如果服務器創(chuàng)建cookie后并且把cookie回寫到瀏覽器后,cookie或保存在瀏覽器,后續(xù)瀏覽器發(fā)送請求訪問該服務器項目時會默認攜帶之前的cookie

  *cookie 是借助頭信息(請求頭->cookie,響應頭->set-cookie)傳遞的

  3)實現原理

  *第一次訪問服務器的時候,不會攜帶任何cookie

  *如果服務器接收到請求后回寫數據的時候如果添加了cookie后,response會通過響應頭setCookie把Cookie以 key=value的形式把cookie 回寫到瀏覽器

  *瀏覽器在接收到cookie之后,會把cookie保存到本地

  *在瀏覽器為不關閉的情況下,再次訪問原服務器項目時會把cookie攜帶到服務器,通過請求頭(cookie --> key = value)

  4)Cookie的細節(jié)

  一次可不可以發(fā)送多個Cookie ? --> 可以

  解 : 創(chuàng)建多個Cookie對象,使用response調用多次addcookie方法發(fā)送Cookie即可

  特點 : Cookie只有通過response.addCookie()的形式才能把Cookie發(fā)送到瀏覽器

  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左右),以及 對統(tǒng)一域名下的總cookie數量也有限制(20個以內)

  *作用 :

  -->cookie一般用于存儲少量的不太敏感的數據到瀏覽器

  -->在不登錄的情況下,完成一個服務器對客戶端的身份識別

  JSP(本質是一個servlet) : 執(zhí)行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中不需要創(chuàng)建或者獲取,可以直接使用的對象

  *jsp一共有9個內置對象

  *out :JspWriter字符輸出流.可以將數據輸出到頁面上reponsegetWriter()類似

  *reponse :

  *request :

  *application : SelectContext

  *session : httpSession

  *pageContext :PageContext

  *config :ServletConfig

  *page : Object 當前頁面

  *exception :Throwable



作者:黑馬程序員JavaEE培訓學院
首發(fā):http://java.itheima.com/

分享到:
在線咨詢 我要報名
和我們在線交談!