更新時(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