Servlet學習-會話技術cookie


會話:用戶開一個瀏覽器,訪問一個網站,只要不關閉該瀏覽器,不管該用戶點擊多少個超鏈接,訪問多少資源,直到用戶關閉瀏覽器,整個這個過程我們稱為一次會話。

為什么要使用cookie

1.記錄用戶的事件

2.瀏覽歷史記錄

3.用戶名和密碼的記錄

 

//createcookie.java
//
創建cookie(api) Cookie cookie=new Cookie("name","cookietest"); //設置cookie的生命周期 cookie.setMaxAge(3600); //把cookie信息寫回給瀏覽器 response.addCookie(cookie);


//
readcookie.java //讀取所有cookie信息 Cookie cookies[]=request.getCookies(); //遍歷cookie for(int i=0;i<cookies.length;i++){   Cookie cookie=cookies[i];   out.println("cookie 名字= "+cookie.getName());//cookie只能放字符串 }

 cookie:

1.cookie是在服務端創建的

2.cookie是保存在瀏覽器這端的

3.cookie的生命周期可以通過cookie.setMaxAge();如果不設置,關閉瀏覽器就destroy了

4.cookie可以被多個瀏覽器共享

5.怎么理解:把cookie假設成一張表  名字(String):值(String)

  所有共享這張表,名字如果重復了就會替換掉存在的cookie值。

6.一個WEB應用可以保存多個cookie

7.cookie存放的時候是以明文方式存放的,因此安全比較低,我們可以通過加密后保存,可以用md5(不可逆)算法加密(想起了base64),經過md5加密后存放到數據庫,用戶輸入密碼后加密然后再和數據庫里面的匹配。

//獲得cookie記錄上次登錄時間
    private String getLasttime(HttpServletRequest request,
            HttpServletResponse response) {
        //先獲取cookie
        //保存上次登陸時間的cookie “2012-11-13 12:36:22”
        Cookie []cookies=request.getCookies();
        // 首次登錄
        boolean b=false;
        String returnName="";
        //獲取時間,用於更新cookie
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-MM-DD HH:mm:ss");
        String nowTime=simpleDateFormat.format(new java.util.Date());
        //遍歷cookie找到需要的值
        if(cookies!=null)
        {
        for(Cookie cookie:cookies)
        {
            //取名字
            String name=cookie.getName();
            if("lasttime".equals(name))
            {
                returnName=cookie.getValue();
                //更新cookie 的時間
                Cookie mycookie = new Cookie("lasttime",nowTime);
                mycookie.setMaxAge(7*24*3600);
                response.addCookie(mycookie);
                b=true;
                break;
            }
            
        }
        }
        if(!b)//第一次登陸的設置
        {
            Cookie mycookie=new Cookie("lasttime",nowTime);
            mycookie.setMaxAge(7*24*3600);
            response.addCookie(mycookie);
            returnName=null;
        }
        return returnName;
    }

 cookie的細節:

1,,一個web應用可以給瀏覽器發送多個cookie,一個瀏覽器可以存儲多個web應用提供的cookie。一般只允許存放300個cookie,每個web應用最多放 20個,每個cookie大小4KB,因此不會塞滿硬盤,也不會被用作“拒絕服務”攻擊手段。

2,cookie的默認生命周期是會話級別的,關閉瀏覽器后就被刪除,可以通過setMaxAge()設置cookie 的生命周期。setMaxAge(0)刪除該cookie:要保持path一致,否則無法刪除,

setMaxAge(負數),則該cookie是會話級別的。

cookie.setMaxAge(0);
response.addCoookie(cookie);//必須帶,相當於執行語句

 如果該cookie只有一個值,則刪除cookie后文件會被刪除,否則文件不會被刪除。

//如果cookie存放中文
//創建cookie(api)
String val=java.net.URLEncoder.encode("中文","utf-8");
Cookie cookie=new Cookie("name",val);


//讀取有中文的cookie要用base64進行解碼
String val=java.net.URLDecoder.decode(cookie.getValue(),"utf-8");

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM