首頁技術(shù)文章正文

Cookie會話相關(guān)知識點(diǎn)

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

  會話技術(shù) :

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

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

  *會話功能 :再一次會話的范圍內(nèi)的多次請求間 , 共享數(shù)據(jù)

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

  *方式 :

  //客戶端會話技術(shù) : Cookie

  //服務(wù)器端會話技術(shù) : Seesion

  Cookie

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

  2)快速入門 :

  *使用步驟 :

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

  -new Cookie(String name,String value)

  2.發(fā)送Cookie對象

  -response.addCookie(Cookie cookie)

  3.獲取Cookie,拿到數(shù)據(jù)

  -Cookie[] ->Request.getCookies()

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

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

  3)實(shí)現(xiàn)原理

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

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

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

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

  4)Cookie的細(xì)節(jié)

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

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

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

  Cookie在瀏覽器中保存多長時間?

  (1)默認(rèn)情況下,當(dāng)瀏覽器關(guān)閉后,Cookie數(shù)據(jù)被銷毀

  (2)設(shè)置cookie生命周期, 持久化存儲

  *setMaxAge(int seconds)

  -整數(shù) : 將Cookie數(shù)據(jù)寫到硬盤的文件中,持久化存儲,Cookie存活時間

  -負(fù)數(shù) : 默認(rèn)值

  -0 : 刪除Cookie信息

  Cookie能不能存中文呢?不管支不支持都不要去存中文

  (1)在tomcat8之前cookie中不能直接存儲中文數(shù)據(jù)

  *需要中文數(shù)據(jù)轉(zhuǎn)碼 --> 一般使用URL編碼,

  *如果進(jìn)行編碼,后面必須解碼

  (2)在tomcat8之后才支持存儲中文

  Cookie獲取范圍是多大?

  (1)假設(shè)在一個tomcat服務(wù)器中,部署了多個web項(xiàng)目,name在這些web項(xiàng)目中cookie能不能共享?

  *默認(rèn)情況下cookie不能共享

  *setPath("/虛擬路徑") :設(shè)置cookie的獲取范圍,默認(rèn)情況下設(shè)置當(dāng)前的虛擬目錄

  *如果要共享,則可以將path設(shè)置為" / "(代表當(dāng)前項(xiàng)目的根路徑)

  (2)不同的tomcat服務(wù)器間cookie共享問題?

  *setDomain(".域名");如果設(shè)置一級域名相同,那么兩個服務(wù)器之間cookie可以共享了

  Cookie的有效路徑

  / --> 當(dāng)前服務(wù)器下所有項(xiàng)目共享

  /虛擬路徑 --> 當(dāng)前服務(wù)器下當(dāng)前項(xiàng)目共享

  /虛擬路徑/user/b --> 只在 /虛擬路徑/user/b 路徑下有效

  /虛擬路徑/user/ --> /虛擬路徑/user/ 下的所有資源有效

  Cookie的特點(diǎn)

  1)cookie 存儲數(shù)據(jù)在客戶端瀏覽器

  2)瀏覽器對于單個cookie大小有限制(一般4KB左右),以及 對統(tǒng)一域名下的總cookie數(shù)量也有限制(20個以內(nèi))

  *作用 :

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

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

  JSP(本質(zhì)是一個servlet) : 執(zhí)行java代碼的html

  1)概念 :

  *Java Server Pages : Java服務(wù)器端頁面

  *可以理解為 : 一個特殊的頁面,其中既可以定義html標(biāo)簽,又可以定義java代碼

  *簡化書寫

  2)原理 :

  *JSP本質(zhì)上就是一個servlet

  *jsp_Servlet()會把html代碼通過內(nèi)置out對象進(jìn)行輸出到頁面從而進(jìn)行解析

  3)Jsp的腳本 : 定義Java代碼的方式

  1.<% java代碼%> : 定義的java代碼在Service方法中。service可以定義什么,該腳本就可以定義什么

  2.<%!java代碼%>:定義的java代碼。在jsp轉(zhuǎn)換后的java類的成員位置

  3.<%=java代碼%>:定義的java代碼會輸出到頁面上,輸出語句中可以頂什么該語句中就可以定義什么

  4)JSP的內(nèi)置對象

  *在jsp中不需要創(chuàng)建或者獲取,可以直接使用的對象

  *jsp一共有9個內(nèi)置對象

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

  *reponse :

  *request :

  *application : SelectContext

  *session : httpSession

  *pageContext :PageContext

  *config :ServletConfig

  *page : Object 當(dāng)前頁面

  *exception :Throwable



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

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!