完全明白JSP的cookie與session

演示 cookie 的建立和訪問


步驟1:cookie 在平時生活中的運用
步驟2:什麼是cookie
步驟3:setCookie.jsp
步驟4:getCookie.jsp
步驟5:cookie原理示意圖html

步驟 1 : cookie 在平時生活中的運用java

有的網站,登錄的時候,會出現一個選項,問你是否要一週內或者一個月內保持登錄狀態。
若是你選了,那麼一週以內,都不須要再輸入帳號密碼。
這個功能,就是靠cookie來實現的web

步驟 2 : 什麼是cookie數組

Cookie是一種瀏覽器和服務器交互數據的方式。

Cookie是由服務器端建立,可是不會保存在服務器

建立好以後,發送給瀏覽器。瀏覽器保存在用戶本地

下一次訪問網站的時候,就會把該Cookie發送給服務器。瀏覽器

步驟 3 : setCookie.jsptomcat

在web目錄下建立一個文件 setCookie.jsp服務器

Cookie c = new Cookie("name""Gareen");cookie


建立了一個cookie,名字是"name" 值是"Gareen"session

c.setMaxAge(24 60 60);jsp


表示這個cookie能夠保留一天,若是是0,表示瀏覽器一關閉就銷燬

c.setPath("/");


Path表示訪問服務器的全部應用都會提交這個cookie到服務端,若是其值是 /a, 那麼就表示僅僅訪問 /a 路徑的時候纔會提交 cookie

response.addCookie(c);


經過response把這個cookie保存在瀏覽器端

訪問地址:

http://127.0.0.1/setCookie.jsp



經過HTTP調試工具也能夠在Cookies這一欄看到

setCookie.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8" import="javax.servlet.http.Cookie"%>

 

<%

    Cookie c = new Cookie("name""Gareen");

    c.setMaxAge(60 24 60);

    c.setPath("/");

    response.addCookie(c);

%>

 

<a href="getCookie.jsp">跳轉到獲取cookie的頁面</a>

步驟 4 : getCookie.jsp

在web目錄下建立文件getCookie.jsp
而後訪問網頁:

http://127.0.0.1/getCookie.jsp


 

Cookie[] cookies  = request.getCookies();


表示獲取全部瀏覽器傳遞過來的cookie

if (null != cookies )


若是瀏覽器端沒有任何cookie,獲得的Cookie數組是null

for (int d = 0; d <= cookies.length - 1; d++) {

   out.print(cookies[d].getName() + ":" + cookies[d].getValue() + "<br>");

}


遍歷全部的cookie

能夠看到name:Gareen,這個在setCookie.jsp中設置的cookie

注; JSESSIONID 這個不是咱們本身設置的cookie,這是tomcat設置的cookie,會在下一章session的學習中用到
經過HTTP調試工具也能夠看到瀏覽器在請求信息裏提交了這個Cookie。

getCookie.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8" import="javax.servlet.http.Cookie"%>

 

<%

    Cookie[] cookies = request.getCookies();

    if (null != cookies)

        for (int d = 0; d <= cookies.length - 1; d++) {

            out.print(cookies[d].getName() + ":" + cookies[d].getValue() + "<br>");

        }

%>

步驟 5 : cookie原理示意圖

cookie原理示意圖


更多內容,點擊瞭解: http://how2j.cn/k/jsp/jsp-cookie/582.html

 

session 詳解


步驟1:健身房的儲物櫃
步驟2:什麼是Session
步驟3:setSession.jsp
步驟4:getSession.jsp
步驟5:Session和Cookie的關係
步驟6:Session 原理示意圖
步驟7:若是沒有cookie,session如何工做
步驟8:session的有效期

步驟 1 : 健身房的儲物櫃

考慮這個場景:
李佳汜到健身房去練胸肌,首先領了鑰匙,而後進了更衣間,把衣服,褲子,手機,錢包都放在盒子裏面。

毛競也到健身房,去練翹臀首先領了鑰匙,而後 進了更衣間,把衣服,褲子,手機,《Java 21天從入門到精通》也放在了一個盒子裏,可是這個盒子是和李佳汜的是不一樣的。

健身房,就至關於服務器,盒子,就是會話Session。

切換到咱們常見的購物網站的場景
李佳汜登錄天貓以後,在購物車裏看到的物品是蠟燭和皮鞭
毛競登錄天貓以後,在購物車裏看到的物品是手銬和《Java 21天從入門到精通》

步驟 2 : 什麼是Session

Session對應的中文翻譯是會話。
會話指的是從用戶打開瀏覽器訪問一個網站開始,不管在這個網站中訪問了多少頁面,點擊了多少連接,都屬於同一個會話。 直到該用戶關閉瀏覽器爲止,都屬於同一個會話。

步驟 3 : setSession.jsp

session.setAttribute("name""teemo");


session對象保存數據的方式,有點像Map的鍵值對(key-value)
"name"是鍵,"teemo" 是值

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8" import="javax.servlet.http.Cookie"%>

 

<%

   session.setAttribute("name", "teemo");

%>

 

<a href="getSession.jsp">跳轉到獲取session的頁面</a>

步驟 4 : getSession.jsp

session.getAttribute("name");


經過session,根據"name" 取出對應的名稱

getSession.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8" import="javax.servlet.http.Cookie"%>

 

<%

    String name = (String)session.getAttribute("name");

%>

 

session中的name: <%=name%>

步驟 5 : Session和Cookie的關係

回到健身房的儲物櫃這一段:

李佳汜和毛競都有本身的盒子,那麼他們怎麼知道哪一個盒子是本身的呢?
經過鑰匙就能找到本身的盒子了。

盒子對應服務器上的Session。
鑰匙對應瀏覽器上的Cookie。

步驟 6 : Session 原理示意圖

Session 原理示意圖

步驟 7 : 若是沒有cookie,session如何工做

若是瀏覽器把cookie功能關閉,那麼服務端就沒法獲取jsessionid,每一次訪問,都會生成一個新的session對象。

爲了解決這個問題,可使用

response.encodeURL("getSession.jsp")


response.encodeURL方法會把getSession.jsp這個url轉換爲

getSession.jsp;jsessionid=22424AEA86ADBE89F335EEB649D997A8


經過這個方式,提交jsessionid到服務器。 服務器根據這個jsessionid匹配到對應的session. 與session相關的功能,就能夠正常工做了。

若是沒有cookie,session如何工做

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8" import="javax.servlet.http.Cookie"%>

 

<%

   session.setAttribute("name""teemo");

%>

 

<a href="<%=response.encodeURL("getSession.jsp")%>">跳轉到獲取session的頁面</a>

步驟 8 : session的有效期

好比登陸一個網站,登陸後,在短期內,依然能夠繼續訪問而不用從新登陸。

可是較長時間不登陸,依然會要求從新登陸,這是由於服務端的session在一段時間不使用後,就失效了。

這個時間,在Tomcat默認配置下,是30分鐘。

能夠經過 d:/tomcat/conf/web.xml 中的session-config 配置進行調整

session的有效期


更多內容,點擊瞭解: http://how2j.cn/k/jsp/jsp-session/583.html

相關文章
相關標籤/搜索