亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么學習并掌握session和cookie

發布時間:2021-11-03 18:00:55 來源:億速云 閱讀:150 作者:iii 欄目:編程語言

這篇文章主要講解了“怎么學習并掌握session和cookie”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么學習并掌握session和cookie”吧!

1. session和cookie學習

1.1. 技術的需求

  • 以京東未登錄時添加購物車為例,在京東上購買東西(未登錄)可以添加到購物車,這時候有個問題是京東如何存儲沒有登錄的你添加的購物車物品?我們肯定想到域對象,request、ServletContext域對象

  • request對象有個問題:request是請求一次,產生一次,如果繼續請求就會釋放掉,也就是說request就有一個,就在本次請求中。這種特性顯然是不行的,因為假如你添加了一個物品進入購物車,然后添加另一個物品,這是第二個請求,就會將第一個請求給覆蓋掉。因此用request域對象來做購物車的添加是不可行的。

  • ServletContext域對象,這個也有問題,這個對象是全局的,不管誰添加購物車,都會集中在一起,在付賬時會發現你會付賬所有人添加的購物車,這顯然是不可取的。

  • 我們的需求是:當我們添加一個物品到購物車時,我們可以多次添加。也就是說由服務器給我們創造一個個人空間,這就引出了另一個域對象session對象

1.2. 會話技術學習

  • 會話技術:從打開一個瀏覽器訪問某個站點開始,到關閉這個瀏覽器的整個過程,成為一次會話。會話技術就是記錄這次會話中客戶端的狀態與數據。

  • 會話技術分為兩種:cookie和session技術。cookie,數據存儲到客戶端本地,減少服務器存儲壓力,安全性不好,客戶端可以清除cookie。session是將數據存儲到服務器,安全性高,但是會增加服務器壓力。

1.3. cookie技術學習

  • 服務器怎樣將一個cookie寫入客戶端

  • 服務器怎樣獲取客戶端攜帶的cookie

1.3.1. 服務器向客戶端發送一個cookie
  1. 創建一個cookie對象

1Cookie cookie=new Cookie(String name,String Value);
  1. 為cookie設置持久化時間-----cookie信息在硬盤上保存的時間,時間到cookie會自動刪除。如果不設置這個cookie就會存儲在內存中,關閉瀏覽器cookie信息被清空了。

1cookie.setMaxAge(60*10);//10分鐘
  1. 設置cookie攜帶路徑,如果不設置,每次訪問將攜帶所有網站的cookie會影響瀏覽器速度。

1cookie.setPath(String path);
1cookie.setPath("/WEB16/sendCookie");//訪問sendCookie資源時才攜帶這個cookie
1cookie.setPath("/WEB16");//訪問WEB16下的所有資源都可以攜帶cookie。

如果不設置攜帶路徑,那么該cookie信息會在訪問產生該cookie的web資源所在的路徑都攜帶cookie信息。

  1. 向客戶端發送cookie

1response.addCookie(Cookie cookie);
1.3.2. 從客戶端獲取cookie
  1. 獲得客戶端攜帶的cookie數據,通過getCookies()方法

1Cookies[] cookies=request.getCookies();
  1. 遍歷數組,用equals()方法獲取想要的cookies

1if(cookies!=null){//用數組判斷null可以 2            for(Cookie cookie:cookies){3            String cookieName=cookie.getName();4            if(cookieName.equals("name")){5                String cookieValue=cookie.getValue();6                System.out.println(cookieValue);7            }8        }9    }

1.4. 案例分析--通過Cookie獲取上次最后瀏覽時間

1.4.1. 向cookie中寫入最后一次瀏覽時間
  1. 獲取當前時間,并格式化時間

1Date date =new Date();2SimpleDateFormat format=new SimpleDataFormat("yyyy-MM-dd hh:mm:ss");3String currentTime=format.format(date);//格式化當前的時間
  1. 創建cookie記錄最新的訪問時間

1Cookie cookie=new Cookie("lastAccessTime",currentTime);2cookie.setMaxAge(60*10*500);//設置cookie存在時間3response.addConkie(cookie);//持久化cookie
  1. 從客戶端獲取cookie---lastAccessTime

 1String lastAccessTime=null; 2//從request中獲取cookie 3Cookie[] cookies=request.getCookies(); 4if(cookies!=null){ 5    for(Cookie coo:cookies){ 6        if("lastAccessTime".equals(coo.getName())){ 7            lastAccessTime=coo.getValue(); 8        } 9    }10}
  1. 判斷是否為第一次問

1response.setContextType("text/html,charset=UTF-8");2if(lastAccessTime==null){3    response.getWriter().write("您是第一次訪問");4}else{5    response.getWriter().write("您上次訪問的時間是:"+lastAccessTime);6}

1.5. Session技術

1.5.1. session技術的實現原理
  1. session技術是將數據存儲到服務器上,面臨的問題有如何知道存儲在服務器上的數據是你存儲的數據。

    怎么學習并掌握session和cookie

  1. 由此可見session技術是基于cookie技術存儲session編號----JSESSISION。

  2. 給服務器創建屬于一個客戶端的session區域,

  3. 向session區域中存取數據

1.5.2. 創建session會話
  1. session屬于客戶端私有的session區域,request.getSession()方法內部會自動判斷,該客戶端是否在服務器端已經存在session,如果該客戶端在服務器上不存在session,那么就會創建一個新的session對象,如果該客戶端已經存在session就會該session

1HttpSession session=request.getSession();2String id=session.getId();3response.getWriter().write("JESSIONID:"+id);//打印到瀏覽器上。
  1. 給session域中賦值

1session.setAttribute("name","jerry");
1.5.3. 關于session會話技術的面試題
  1. 重定向和轉發的區別:

  • 重定向請求兩次,轉發請求一次。

  1. session會話的聲明周期

創建: 第一次執行request.getSession()時創建。(服務器端在執行到request.getSession()時會查看cookie是否有sessionId,有就獲取,沒有就創建一個。)

銷毀: 1)服務器關閉時。2)session過期失效(默認30分鐘)可以在web.xml配置。

手動銷毀:session.invalidate();

作用范圍:默認在一次會話中,也就是說在一次會話中,任何資源公用一個session對象。

  1. 瀏覽器關閉,session就銷毀了?

    不對,session域在服務器上,跟客戶端無關,默認30分鐘銷毀。

1.5.4. session的持久化技術
  1. session為什么要持久化?

    比如啟動一個瀏覽器,設置好參數后,關閉瀏覽器,重啟,這些參數又丟失了。這不是很麻煩?就比如未登錄的百度一樣,設置了瀏覽記錄不可見的參數,設置以后可以保證一段時間登陸百度看不到瀏覽記錄,但是一段時間過去后又出現了瀏覽記錄,我認為這就用到了session持久化的技術,除此之外驗證碼的校驗也需要用到session技術,因為存放在request域中,一旦請求校驗,就會丟失,如果存儲在ServletContext()域中,就會成為全局的對象,整個登錄該網站的驗證碼都會被加載進去,這就不符合技術規范了,因此session域是適合的域。

  2. session如何實現持久化?

    session持久化的實現靠的是cookie實現的。首先需要讓cookie能夠長期存儲session的id號,那么就要設置cookie的存儲時間,因為cookie能存儲更長時間,關閉瀏覽器也不會立即消失,就可以重新獲取cookie。

1String id=session.getId()//獲取session的id2Cookie cookie=new Cookie("JSESSIONID",id);//創建一個cookie,其中

感謝各位的閱讀,以上就是“怎么學習并掌握session和cookie”的內容了,經過本文的學習后,相信大家對怎么學習并掌握session和cookie這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜章县| 泰来县| 揭西县| 拉孜县| 砚山县| 大同县| 商水县| 延川县| 油尖旺区| 龙山县| 福州市| 宁海县| 田林县| 新闻| 安庆市| 衡南县| 嫩江县| 蓬安县| 丰镇市| 石城县| 大渡口区| 当雄县| 顺义区| 化德县| 禹城市| 镇康县| 邢台县| 张家川| 石首市| 永仁县| 平安县| 博兴县| 准格尔旗| 泰和县| 九台市| 东方市| 安泽县| 通河县| 巢湖市| 望奎县| 疏勒县|