Cookie和Session
-
會話技術(shù)
- Cookie
- Session
-
會話:一次會話中包含多次請求和響應(yīng)。
- 一次會話:瀏覽器第一次給服務(wù)器資源發(fā)送請求,會話建立扒袖,直到有一方斷開為止
功能:在一次會話的范圍內(nèi)的多次請求間呛凶,共享數(shù)據(jù)
-
方式:
- 客戶端會話技術(shù):Cookie
- 服務(wù)器端會話技術(shù):Session
Cookie:
1. 概念:客戶端會話技術(shù),將數(shù)據(jù)保存到客戶端
2. 快速入門:
* 使用步驟:
1. 創(chuàng)建Cookie對象毅往,綁定數(shù)據(jù)
* new Cookie(String name, String value)
2. 發(fā)送Cookie對象
* response.addCookie(Cookie cookie)
3. 獲取Cookie,拿到數(shù)據(jù)
* Cookie[] request.getCookies()
3. 實現(xiàn)原理
* 基于響應(yīng)頭set-cookie和請求頭cookie實現(xiàn)
4. cookie的細節(jié)
1. 一次可不可以發(fā)送多個cookie?
* 可以
* 可以創(chuàng)建多個Cookie對象在讶,使用response調(diào)用多次addCookie方法發(fā)送cookie即可煞抬。
2. cookie在瀏覽器中保存多長時間?
1. 默認情況下构哺,當(dāng)瀏覽器關(guān)閉后革答,Cookie數(shù)據(jù)被銷毀
2. 持久化存儲:
* setMaxAge(int seconds)
1. 正數(shù):將Cookie數(shù)據(jù)寫到硬盤的文件中。持久化存儲曙强。并指定cookie存活時間残拐,時間到后,cookie文件自動失效
2. 負數(shù):默認值
3. 零:刪除cookie信息
3. cookie能不能存中文碟嘴?
* 在tomcat 8 之前 cookie中不能直接存儲中文數(shù)據(jù)溪食。
* 需要將中文數(shù)據(jù)轉(zhuǎn)碼---一般采用URL編碼(%E3)
* 在tomcat 8 之后,cookie支持中文數(shù)據(jù)娜扇。特殊字符還是不支持错沃,建議使用URL編碼存儲栅组,URL解碼解析
4. cookie共享問題?
1. 假設(shè)在一個tomcat服務(wù)器中枢析,部署了多個web項目玉掸,那么在這些web項目中cookie能不能共享?
* 默認情況下cookie不能共享
* setPath(String path):設(shè)置cookie的獲取范圍醒叁。默認情況下司浪,設(shè)置當(dāng)前的虛擬目錄
* 如果要共享,則可以將path設(shè)置為"/"
5. Cookie的特點和作用
1. cookie存儲數(shù)據(jù)在客戶端瀏覽器
2. 瀏覽器對于單個cookie 的大小有限制(4kb) 以及 對同一個域名下的總cookie數(shù)量也有限制(20個)
* 作用:
1. cookie一般用于存出少量的不太敏感的數(shù)據(jù)
2. 在不登錄的情況下把沼,完成服務(wù)器對客戶端的身份識別
JSP:入門學(xué)習(xí)
- 概念:
- Java Server Pages: java服務(wù)器端頁面
- 可以理解為:一個特殊的頁面啊易,其中既可以指定定義html標(biāo)簽,又可以定義java代碼
- 用于簡化書寫R恰W馓浮!
- Java Server Pages: java服務(wù)器端頁面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
- JSP本質(zhì)上就是一個Servlet
- JSP的腳本:JSP定義Java代碼的方式
1. <% 代碼 %>:定義的java代碼续捂,在service方法中垦垂。service方法中可以定義什么,該腳本中就可以定義什么牙瓢。
2. <%! 代碼 %>:定義的java代碼,在jsp轉(zhuǎn)換后的java類的成員位置间校。
3. <%= 代碼 %>:定義的java代碼矾克,會輸出到頁面上。輸出語句中可以定義什么憔足,該腳本中就可以定義什么胁附。
<%-- jsp案例--%>
<% out.write("hehehahha!"); %>
<%! String name = "zhangsan";%>
<%= "nihaoma"%>
- JSP的內(nèi)置對象:
- 在jsp頁面中不需要獲取和創(chuàng)建,可以直接使用的對象
- jsp一共有9個內(nèi)置對象滓彰。
- 今天學(xué)習(xí)3個:
- request
- response
- out:字符輸出流對象控妻。可以將數(shù)據(jù)輸出到頁面上揭绑。和response.getWriter()類似
- response.getWriter()和out.write()的區(qū)別:
- 在tomcat服務(wù)器真正給客戶端做出響應(yīng)之前弓候,會先找response緩沖區(qū)數(shù)據(jù),再找out緩沖區(qū)數(shù)據(jù)他匪。
- response.getWriter()數(shù)據(jù)輸出永遠在out.write()之前
Session
- 概念:服務(wù)器端會話技術(shù)菇存,在一次會話的多次請求間共享數(shù)據(jù),將數(shù)據(jù)保存在服務(wù)器端的對象中邦蜜。HttpSession
- 快速入門:
- 獲取HttpSession對象:
HttpSession session = request.getSession(); - 使用HttpSession對象:
Object getAttribute(String name)
void setAttribute(String name, Object value)
void removeAttribute(String name)
- 獲取HttpSession對象:
- 原理
- Session的實現(xiàn)是依賴于Cookie的
Session和Cookie的區(qū)別
- Session 存儲在服務(wù)端依鸥, Cookie客戶端
- Session沒有數(shù)據(jù)大小限制,Cookie有限制
3.Session 數(shù)據(jù)安全悼沈,Cookie相對不安全