Cookie和Session
-
會(huì)話技術(shù)
- Cookie
- Session
-
會(huì)話:一次會(huì)話中包含多次請(qǐng)求和響應(yīng)魄衅。
- 一次會(huì)話:瀏覽器第一次給服務(wù)器資源發(fā)送請(qǐng)求廷臼,會(huì)話建立苍在,直到有一方斷開(kāi)為止
功能:在一次會(huì)話的范圍內(nèi)的多次請(qǐng)求間,共享數(shù)據(jù)
-
方式:
- 客戶(hù)端會(huì)話技術(shù):Cookie
- 服務(wù)器端會(huì)話技術(shù):Session
Cookie:
1. 概念:客戶(hù)端會(huì)話技術(shù)荠商,將數(shù)據(jù)保存到客戶(hù)端
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()
3. 實(shí)現(xiàn)原理
* 基于響應(yīng)頭set-cookie和請(qǐng)求頭cookie實(shí)現(xiàn)
4. cookie的細(xì)節(jié)
1. 一次可不可以發(fā)送多個(gè)cookie?
* 可以
* 可以創(chuàng)建多個(gè)Cookie對(duì)象莱没,使用response調(diào)用多次addCookie方法發(fā)送cookie即可初肉。
2. cookie在瀏覽器中保存多長(zhǎng)時(shí)間?
1. 默認(rèn)情況下饰躲,當(dāng)瀏覽器關(guān)閉后牙咏,Cookie數(shù)據(jù)被銷(xiāo)毀
2. 持久化存儲(chǔ):
* setMaxAge(int seconds)
1. 正數(shù):將Cookie數(shù)據(jù)寫(xiě)到硬盤(pán)的文件中。持久化存儲(chǔ)属铁。并指定cookie存活時(shí)間眠寿,時(shí)間到后,cookie文件自動(dòng)失效
2. 負(fù)數(shù):默認(rèn)值
3. 零:刪除cookie信息
3. cookie能不能存中文焦蘑?
* 在tomcat 8 之前 cookie中不能直接存儲(chǔ)中文數(shù)據(jù)。
* 需要將中文數(shù)據(jù)轉(zhuǎn)碼---一般采用URL編碼(%E3)
* 在tomcat 8 之后盒发,cookie支持中文數(shù)據(jù)例嘱。特殊字符還是不支持,建議使用URL編碼存儲(chǔ)宁舰,URL解碼解析
4. cookie共享問(wèn)題拼卵?
1. 假設(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è)置為"/"
5. Cookie的特點(diǎn)和作用
1. cookie存儲(chǔ)數(shù)據(jù)在客戶(hù)端瀏覽器
2. 瀏覽器對(duì)于單個(gè)cookie 的大小有限制(4kb) 以及 對(duì)同一個(gè)域名下的總cookie數(shù)量也有限制(20個(gè))
* 作用:
1. cookie一般用于存出少量的不太敏感的數(shù)據(jù)
2. 在不登錄的情況下,完成服務(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ě)!V贰墩蔓!
- Java Server Pages: java服務(wù)器端頁(yè)面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
- JSP本質(zhì)上就是一個(gè)Servlet
- JSP的腳本:JSP定義Java代碼的方式
1\. <% 代碼 %>:定義的java代碼梢莽,在service方法中。service方法中可以定義什么奸披,該腳本中就可以定義什么昏名。
2\. <%! 代碼 %>:定義的java代碼,在jsp轉(zhuǎn)換后的java類(lèi)的成員位置阵面。
3\. <%= 代碼 %>:定義的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()之前
Session
- 概念:服務(wù)器端會(huì)話技術(shù)邑茄,在一次會(huì)話的多次請(qǐng)求間共享數(shù)據(jù),將數(shù)據(jù)保存在服務(wù)器端的對(duì)象中俊啼。HttpSession
- 快速入門(mén):
- 獲取HttpSession對(duì)象:
HttpSession session = request.getSession(); - 使用HttpSession對(duì)象:
Object getAttribute(String name)
void setAttribute(String name, Object value)
void removeAttribute(String name)
- 獲取HttpSession對(duì)象:
- 原理
- Session的實(shí)現(xiàn)是依賴(lài)于Cookie的
Session和Cookie的區(qū)別
- Session 存儲(chǔ)在服務(wù)端肺缕, Cookie客戶(hù)端
- Session沒(méi)有數(shù)據(jù)大小限制,Cookie有限制
3.Session 數(shù)據(jù)安全授帕,Cookie相對(duì)不安全