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

Cookie會(huì)話相關(guān)知識(shí)點(diǎn)

更新時(shí)間:2019-01-10 來(lái)源:黑馬程序員 瀏覽量:

  會(huì)話技術(shù) :

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

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

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

  *會(huì)話可以應(yīng)用在購(gòu)物車(chē)(Cookie)

  *方式 :

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

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

  Cookie

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

  2)快速入門(mén) :

  *使用步驟 :

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

  -new Cookie(String name,String value)

  2.發(fā)送Cookie對(duì)象

  -response.addCookie(Cookie cookie)

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

  -Cookie[] ->Request.getCookies()

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

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

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

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

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

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

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

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

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

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

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

  Cookie在瀏覽器中保存多長(zhǎng)時(shí)間?

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

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

  *setMaxAge(int seconds)

  -整數(shù) : 將Cookie數(shù)據(jù)寫(xiě)到硬盤(pán)的文件中,持久化存儲(chǔ),Cookie存活時(shí)間

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

  -0 : 刪除Cookie信息

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

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

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

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

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

  Cookie獲取范圍是多大?

  (1)假設(shè)在一個(gè)tomcat服務(wù)器中,部署了多個(gè)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共享問(wèn)題?

  *setDomain(".域名");如果設(shè)置一級(jí)域名相同,那么兩個(gè)服務(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 存儲(chǔ)數(shù)據(jù)在客戶端瀏覽器

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

  *作用 :

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

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

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

  1)概念 :

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

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

  *簡(jiǎn)化書(shū)寫(xiě)

  2)原理 :

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

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

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

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

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

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

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

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

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

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

  *reponse :

  *request :

  *application : SelectContext

  *session : httpSession

  *pageContext :PageContext

  *config :ServletConfig

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

  *exception :Throwable



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

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