cookie&session會話技術(shù)原理及運(yùn)用

會話技術(shù)

1.會話:一次會話中包含多個請求和響應(yīng)
一次會話:瀏覽器第一次給服務(wù)器資源發(fā)送請求省有,會話建立,直到有一方被打斷為止
會話功能:在一次會話范圍內(nèi)的多次請求次氨,共享數(shù)據(jù)

會話方式

1.客戶端會話技術(shù):cookie
2.服務(wù)器會話技術(shù):session

Cookie

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

快速入門

步驟
1.創(chuàng)建cookie對象鸵熟,綁定數(shù)據(jù)
new Cookie(String name,String value);
2.發(fā)送cookie對象
response 對象副编。 response.addCookie(Cookie cookie);
3.獲取Cookie,拿到數(shù)據(jù)
Cookie[] request.getCookies();

Cookie的原理:


image.png

cookie細(xì)節(jié):

1.一次可不可以發(fā)送多個cookie流强?

可以 可以創(chuàng)建多個cookie對象 痹届,使用response多次調(diào)用addCookies(Cookie cookie);

2.cookie在瀏覽器中存放多長時間

1.默認(rèn)情況下,當(dāng)瀏覽器關(guān)閉后數(shù)據(jù)被銷毀
2.持久化存儲:
setMaxAge(int seconds);
1.正數(shù) 將cookie數(shù)據(jù)寫到硬盤的文件中打月,持久化存儲队腐,cookie存活時間
2.負(fù)數(shù) 默認(rèn)存儲到內(nèi)存中
3 .零 刪除cookie信息

3.cookie能不能存中文

在tomcat8之前,不能直接存儲中文
需要將中文數(shù)據(jù)轉(zhuǎn)碼奏篙,一般采用URL編碼(%E3)
例如:

SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String lastTime = format.format(date);
String encode = URLEncoder.encode(lastTime, "utf-8");
cookie.setValue(encode);
cookie.setMaxAge(60 * 60 * 60 * 24 * 30);
response.addCookie(cookie);

String value = cookie.getValue();
String decode = URLDecoder.decode(value, "utf-8");

在tomcat8之后柴淘,tomcat支持中文

4.cookie共享問題

假設(shè)在一個tomcat服務(wù)器中,部署了多個web項(xiàng)目秘通,那么在這些web項(xiàng)目中cookie能不能共享
默認(rèn)情況下不能共享

1.setPath(String path)为严;設(shè)置cookie的獲取范圍。默認(rèn)情況下肺稀,設(shè)置當(dāng)前的虛擬目錄如果要共享第股,可以將path設(shè)置為’/’

2.不同的tomcat服務(wù)器間cookie共享數(shù)據(jù)
setDomain(String path);如果設(shè)置一級域名相同话原,那么多個服務(wù)器之間cookie可以共享
例如:setDomain(“www.baidu.com”);

5.cookie的特點(diǎn)

1.cookie存儲的數(shù)據(jù)的客戶端瀏覽器
2.瀏覽器對于單個cookie的大小限制 以及對同一個域名下的總cookie數(shù)量有限制(20個)

作用:

1.cookie一般用于存在少量的不太敏感的數(shù)據(jù)
2.在不登錄的情況下夕吻,來完成服務(wù)器對客戶端的身份識別

JSP入門學(xué)習(xí)

1.概念 Java Server Pages : Java服務(wù)器端頁面

可以理解為:一個特殊的頁面诲锹,其中既可以定義html頁面也可以定義java代碼
用與簡化書寫

2.JSP原理

image.png

JSP本質(zhì)時servlet

3.JSP腳本:JSP定義java代碼的方式

  1. <% 代碼%>:定義的java代碼,在service方法中梭冠,service方法中可以定義什么,該腳本就可以定義什么
    2.<%!代碼%>:定義的java的代碼改备,在jsp轉(zhuǎn)換的java類的成員位置
    3.<%=代碼%>:定義的java代碼會輸出到頁面上

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

1.在JSP頁面中不需要獲取和創(chuàng)建控漠,可以直接使用對象
2.jsp一共有9個內(nèi)置對象

response.getWriter 和 out區(qū)別

在tomcat服務(wù)器真正給客戶端做出響應(yīng)之前,會先找response緩沖區(qū)數(shù)據(jù)悬钳,再找out緩沖區(qū)數(shù)據(jù)
response.getWriter數(shù)據(jù)輸出永遠(yuǎn)在out.write()之前

Session

概念:服務(wù)端會話技術(shù)盐捷,在一次會話的多次請求間共享數(shù)據(jù),將數(shù)據(jù)保存在服務(wù)器中的對象中默勾。HttpSession

快速入門:

1.獲取到session對象
HttpSession httpSession = request.getSession();
2.HttpSession對象
Object getAttribute(String name)
void setAttribute(String s,Object o)
void removeAttribute(String name)

session原理:session的實(shí)現(xiàn)是依賴于cookie的

原理圖:


image.png

細(xì)節(jié):

1.當(dāng)客戶端關(guān)閉碉渡,服務(wù)器不關(guān)閉,兩次獲取的session是否為同一個
默認(rèn)情況下母剥。不是
如果需要相同滞诺,可以創(chuàng)建cookie,JSESSIONID 設(shè)置最大存活時間环疼,讓cookie持久化保存

HttpSession session = request.getSession();
Cookie cookie = new Cookie("JSESSIONID",session.getId());   
cookie.setMaxAge(60*60);
response.addCookie(cookie);

2.客戶端不關(guān)閉习霹,服務(wù)器關(guān)閉,兩次獲取的session是同一個嗎
不是同一個
session的鈍化:服務(wù)器正常關(guān)閉之前炫隶,將session對象序列化到硬盤上
session的活化:在服務(wù)器啟動后淋叶,將session文件轉(zhuǎn)化為內(nèi)存中session對象即可

3.session什么時候被銷毀
1.服務(wù)器正常關(guān)閉
2.session對象調(diào)用invalidate
3.session默認(rèn)失效時間 30分鐘
選擇性配置修改
<session-config>
<session-timeout>30</session-timeout>
</session-config>

特點(diǎn):

1.session用于存儲一次會話的多次請求的數(shù)據(jù),存在服務(wù)器端
2.session可以存儲任意大小的數(shù)據(jù)

session與cookie區(qū)別

1.session存儲在服務(wù)器端伪阶,cookie存儲在客戶端
2.session沒有大小限制煞檩,cookie有
3.session數(shù)據(jù)安全 cookie數(shù)據(jù)不安全

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市栅贴,隨后出現(xiàn)的幾起案子斟湃,更是在濱河造成了極大的恐慌,老刑警劉巖檐薯,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桐早,死亡現(xiàn)場離奇詭異,居然都是意外死亡厨剪,警方通過查閱死者的電腦和手機(jī)哄酝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祷膳,“玉大人陶衅,你說我怎么就攤上這事≈背浚” “怎么了搀军?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵膨俐,是天一觀的道長。 經(jīng)常有香客問我罩句,道長焚刺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任门烂,我火速辦了婚禮乳愉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘屯远。我一直安慰自己蔓姚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布慨丐。 她就那樣靜靜地躺著坡脐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪房揭。 梳的紋絲不亂的頭發(fā)上备闲,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天,我揣著相機(jī)與錄音捅暴,去河邊找鬼浅役。 笑死,一個胖子當(dāng)著我的面吹牛伶唯,可吹牛的內(nèi)容都是我干的觉既。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼乳幸,長吁一口氣:“原來是場噩夢啊……” “哼瞪讼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起粹断,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤符欠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瓶埋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體希柿,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年养筒,在試婚紗的時候發(fā)現(xiàn)自己被綠了曾撤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡晕粪,死狀恐怖挤悉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巫湘,我是刑警寧澤装悲,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布昏鹃,位于F島的核電站,受9級特大地震影響诀诊,放射性物質(zhì)發(fā)生泄漏洞渤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一属瓣、第九天 我趴在偏房一處隱蔽的房頂上張望载迄。 院中可真熱鬧,春花似錦奠涌、人聲如沸宪巨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至极祸,卻和暖如春慈格,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背遥金。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工浴捆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人稿械。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓选泻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親美莫。 傳聞我的和親對象是個殘疾皇子页眯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評論 2 359