Cookie和Session
會(huì)話(huà)技術(shù)
Cookie
Session
會(huì)話(huà):一次會(huì)話(huà)中包含多次請(qǐng)求和響應(yīng)。
一次會(huì)話(huà):瀏覽器第一次給服務(wù)器資源發(fā)送請(qǐng)求改化,會(huì)話(huà)建立,直到有一方斷開(kāi)為止
功能:在一次會(huì)話(huà)的范圍內(nèi)的多次請(qǐng)求間共屈,共享數(shù)據(jù)
方式:
客戶(hù)端會(huì)話(huà)技術(shù):Cookie
服務(wù)器端會(huì)話(huà)技術(shù):Session
Cookie:
概念:客戶(hù)端會(huì)話(huà)技術(shù)狭瞎,將數(shù)據(jù)保存到客戶(hù)端
-
快速入門(mén):
- 使用步驟:
- 創(chuàng)建Cookie對(duì)象,綁定數(shù)據(jù)
- new Cookie(String name, String value)
- 發(fā)送Cookie對(duì)象
- response.addCookie(Cookie cookie)
- 獲取Cookie欢唾,拿到數(shù)據(jù)
- Cookie[] request.getCookies()
- 創(chuàng)建Cookie對(duì)象,綁定數(shù)據(jù)
- 使用步驟:
-
實(shí)現(xiàn)原理
- 基于響應(yīng)頭set-cookie和請(qǐng)求頭cookie實(shí)現(xiàn)
-
cookie的細(xì)節(jié)
- 一次可不可以發(fā)送多個(gè)cookie?
- 可以
- 可以創(chuàng)建多個(gè)Cookie對(duì)象且警,使用response調(diào)用多次addCookie方法發(fā)送cookie即可。
- cookie在瀏覽器中保存多長(zhǎng)時(shí)間礁遣?
- 默認(rèn)情況下斑芜,當(dāng)瀏覽器關(guān)閉后,Cookie數(shù)據(jù)被銷(xiāo)毀
- 持久化存儲(chǔ):
- setMaxAge(int seconds)
- 正數(shù):將Cookie數(shù)據(jù)寫(xiě)到硬盤(pán)的文件中祟霍。持久化存儲(chǔ)杏头。并指定cookie存活時(shí)間,時(shí)間到后沸呐,cookie文件自動(dòng)失效
- 負(fù)數(shù):默認(rèn)值
- 零:刪除cookie信息
- setMaxAge(int seconds)
- cookie能不能存中文醇王?
- 在tomcat 8 之前 cookie中不能直接存儲(chǔ)中文數(shù)據(jù)。
- 需要將中文數(shù)據(jù)轉(zhuǎn)碼---一般采用URL編碼(%E3)
- 在tomcat 8 之后崭添,cookie支持中文數(shù)據(jù)寓娩。特殊字符還是不支持,建議使用URL編碼存儲(chǔ),URL解碼解析
- 在tomcat 8 之前 cookie中不能直接存儲(chǔ)中文數(shù)據(jù)。
- cookie共享問(wèn)題根暑?
- 假設(shè)在一個(gè)tomcat服務(wù)器中力试,部署了多個(gè)web項(xiàng)目,那么在這些web項(xiàng)目中cookie能不能共享排嫌?
默認(rèn)情況下cookie不能共享
-
setPath(String path):設(shè)置cookie的獲取范圍畸裳。默認(rèn)情況下,設(shè)置當(dāng)前的虛擬目錄
- 如果要共享淳地,則可以將path設(shè)置為"/"
- 假設(shè)在一個(gè)tomcat服務(wù)器中力试,部署了多個(gè)web項(xiàng)目,那么在這些web項(xiàng)目中cookie能不能共享排嫌?
- 一次可不可以發(fā)送多個(gè)cookie?
-
Cookie的特點(diǎn)和作用
- cookie存儲(chǔ)數(shù)據(jù)在客戶(hù)端瀏覽器
- 瀏覽器對(duì)于單個(gè)cookie 的大小有限制(4kb) 以及 對(duì)同一個(gè)域名下的總cookie數(shù)量也有限制(20個(gè))
- 作用:
- cookie一般用于存出少量的不太敏感的數(shù)據(jù)
- 在不登錄的情況下怖糊,完成服務(wù)器對(duì)客戶(hù)端的身份識(shí)別
JSP:入門(mén)學(xué)習(xí)
概念:
Java Server Pages: java服務(wù)器端頁(yè)面
可以理解為:一個(gè)特殊的頁(yè)面,其中既可以指定定義html標(biāo)簽颇象,又可以定義java代碼
用于簡(jiǎn)化書(shū)寫(xiě)N樯恕!遣钳!
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
JSP本質(zhì)上就是一個(gè)Servlet
JSP的腳本:JSP定義Java代碼的方式
<% 代碼 %>:定義的java代碼扰魂,在service方法中。service方法中可以定義什么蕴茴,該腳本中就可以定義什么劝评。
<%! 代碼 %>:定義的java代碼,在jsp轉(zhuǎn)換后的java類(lèi)的成員位置倦淀。
<%= 代碼 %>:定義的java代碼蒋畜,會(huì)輸出到頁(yè)面上。輸出語(yǔ)句中可以定義什么撞叽,該腳本中就可以定義什么姻成。
<%-- jsp案例--%>
<% out.write("hehehahha!"); %>
<%! String name = "zhangsan";%>
<%= "nihaoma"%>
JSP的內(nèi)置對(duì)象:
在jsp頁(yè)面中不需要獲取和創(chuàng)建,可以直接使用的對(duì)象
jsp一共有9個(gè)內(nèi)置對(duì)象愿棋。
今天學(xué)習(xí)3個(gè):
request
response
out:字符輸出流對(duì)象科展。可以將數(shù)據(jù)輸出到頁(yè)面上初斑。和response.getWriter()類(lèi)似
response.getWriter()和out.write()的區(qū)別:
在tomcat服務(wù)器真正給客戶(hù)端做出響應(yīng)之前辛润,會(huì)先找response緩沖區(qū)數(shù)據(jù),再找out緩沖區(qū)數(shù)據(jù)见秤。
response.getWriter()數(shù)據(jù)輸出永遠(yuǎn)在out.write()之前