會話技術(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的原理:
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原理
JSP本質(zhì)時servlet
3.JSP腳本:JSP定義java代碼的方式
- <% 代碼%>:定義的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的
原理圖:
細(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ù)不安全