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ě)!b晌颉畔濒!
<%@ 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()之前
Session
概念:服務(wù)器端會(huì)話(huà)技術(shù)捍壤,在一次會(huì)話(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)
原理
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ì)不安全