會話技術cookie

 

由於Http是無狀態的須要會話技術來區別客戶端是誰發送的請求html

會話技術(響應頭是設置cookie的,請求頭是攜帶cookie值的):是從打開一個瀏覽器直到關閉這個瀏覽器爲止整個過程是一次會話,會話技術就是記錄客戶端的狀態和數據的數組

會話技術分爲:Cookie和Session;Cookie(在客戶端存儲數據,也就是緩存,緩解服務器壓力可是不安全):數據存儲在客戶端本地,減小服務器端存儲的壓力,不安全,客戶端能夠清楚Cookie瀏覽器

Session(單獨在服務器開闢一塊內存區域,加劇了服務器壓力,可是安全):將數據存儲在服務器端,安全性相對較好,增長服務器壓力緩存

建立Cookie(以鍵值對的形式存數據,不能存中文,關閉瀏覽器後Cookie消失):Cookie cookie=new Cookie(String CookieName,String CookieValue);安全

Cookie在客戶端持久化(Cookie自動向服務器端發送信息,可是服務器端須要去接收否則沒有用):cookie.setMaxAge(120(時間:持續2分鐘))若是不設置持久化時間,cookie會存儲在瀏覽器內存中,關閉瀏覽器,cookie就會銷燬(會話級別的cookie),若是設置了持久化時間,cookie信息會被持久化到瀏覽器的磁盤文件夾(就是瀏覽器的安裝路徑)服務器

建立cookie對象:Cookie cookie=new Cookie("name","小明");以鍵值對的形式存進cookiecookie

設置cookie的持久化時間:cookie.setMaxAge(120);這裏的時間單位是秒iphone

將cookie發送到客戶端:response.addCookie(cookie)指針

第一次請求的時候,請求頭是沒有cookie的由於cookie得須要服務器取建立,因此第一次的響應頭有cookie二請求頭 沒有cookieorm

第二次請求服務器的時候,由於第一次已經把cookie傳給了瀏覽器因此第二次訪問服務器就會攜帶cookie(由於是 第一次服務器給的)

cookie.setPath("/WEB0917");這裏個是WEB0917下的資源都攜帶

cookie.setPath("/");這個是隻要訪問服務器下的全部資源都攜帶

cookie.setPath();若是不設置攜帶路徑:當你訪問產生改cookie的路徑的路徑攜帶

刪除cookie:由於cookie不能刪除只能設置一個持久是0的同名且同路徑的cookie代替了並刪除原來的cookie

刪除cookie

Cookie cookie=new Cookie("goods","iphone11");

//設置持久化時間爲0

cookie.setMaxAge(0);//設置0是立馬刪除cookie;關閉瀏覽器是結束一次會話,不同

cookie.setPath("/WEB0917");//這裏的路徑要和建立的cookie的路徑同樣

//刪除的條件是,兩個cookie的名字和路徑要同樣,且第二個cookie的持續時間要是0;這樣就刪除了

//發送cookie

response.addCookie(cookie);//用這個持久是0的cookie把同名路徑的持久時間長的cookie給代替掉,0時間也就刪除了

//獲取Cookie從request對象中獲取Cookie數組

Cookie[] cookies=request.getCookies();

for(Cookie c:cookies){

if(c.getName().equals("goods")){//這裏是經過.getName()獲得name並用.equals("goods")比較肯定

System.out.println(c.getValue());//若是是goods就取出值 }}

 

 

每次訪問顯示上次訪問的時間

//建立日期對象,記錄當前訪問時間Date date=new Date();//轉換日期格式SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//獲取轉換後的日期字符串String currentTime=sdf.format(date);//建立cookie對象//由於cookie只能傳英文因此上面dsf的格式是"yyyy-MM-dd HH:mm:ss"Cookie cookie=new Cookie("LastTime",currentTime);//設置持久化時間cookie.setMaxAge(60*10);//發送cookieresponse.addCookie(cookie);//獲取客戶端攜帶的cookie --LastTimeCookie[] cookies=request.getCookies();String lasttime=null;//遍歷獲取name是lasttime的cookie對象中的value值if(cookies!=null){ //這裏得加一個cookies是null的斷定,若是不是null才能遍歷,否則這個數組是空的會報空指針異常for(Cookie c:cookies){ if(c.getName().equals("LastTime")); lasttime=c.getValue();}}//解決中文亂碼response.setContentType("text/html;charset=UTF-8");if(lasttime==null){ response.getWriter().write("您是第一次訪問");}else{ response.getWriter().write("您上次訪問的時間是:"+lasttime);}

相關文章
相關標籤/搜索