Cookie、Session

一、Cookie
1.爲什麼要使用Cookie?
    Cookie是將用戶的數據以文本的形式保存在了本地。可以做到簡化登錄。但缺點在於無法保障數據的安全
2.如何使用Cookie?
    a.導入Cookie包。javax.servlet.http.Cookie
    b.創建Cookie:  Cookie cookie = new Cookie("","");
              參數說明:創建只有這一種形式,第一個參數爲Cookie名稱,第二個參數爲Cookie的具體值。
              注意:Cookie值只能是String類型
    c.寫入Cookie:response.addCookie(創建的Cookie對象);
    d.Cookie常用的方法:
            setMaxAge();設置Cookie的最大有效時間。以秒爲單位。
            getName():用來獲取Cookie的名稱,
            getValue():獲取Cookie中保存的數據值。
            setValue();設置Cookie要保存的數據值
            getMaxAge():獲取Cookie的最大有效時間
3.Cookie在實戰中用在哪?
     a.簡化登錄。在用戶第一次登錄成功以後,要用戶的用戶名放入Cookie,設置最大有效時間,這樣就可以做到在有效時間
                內免登錄的效果。
     b.在電商軟件中,將用戶訪問過的商品信息,放入Cookie,可以方便用戶回顧瀏覽的歷史。
      c.在有效時間範圍內,也可以做到用戶倒鏈訪問某個頁面
 
二、Session:
1.爲什麼要使用session?
  Session:使用用來對用戶訪問的控制與回話跟蹤。(回話:request,以及response)
2.如何使用Session?
    a.創建Session:HttpSession session = request.getSession();
    b.將需要在每個頁面中要使用的數據放入到session作用域中。:session.setAttribute(key,value);
      參數解釋:key是要獲取session中數據的標識,只能是String類型
               value:是Object類型
       
     c.常用的方法:
       1.setAttribute()
       2.getAttribute("");返回Object類型。通過參數名稱獲取與其指向的數據
       3.getMaxInactiveInterval();設置Session的最大有效性,單位:秒
       4.invalidate():銷燬當前的session。這個方法往往用在系統用戶登出。(實戰中寫完此方法,還要將對象賦值爲null)
       5.getId():獲取當前session的Id編號。
3.在哪使用Session?
     因爲session的作用在瀏覽器,所以不便於將大量的數據集合放入session。
     一般會在用戶登錄成功後,將用戶的名放入session。
     在當前瀏覽器未關閉時,也可以做到防止用戶倒鏈的情況發生,比建議用它實現免登錄,無意義。

三、案例

 

 1 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 2         //設置字符編碼集
 3         request.setCharacterEncoding("UTF-8");
 4         response.setCharacterEncoding("UTF-8");
 5         //獲取用戶提交請求校驗的信息
 6         String name=request.getParameter("name");
 7         String pwd=request.getParameter("pwd");
 8         
 9         //接收校驗後返回的結果
10         String poname=petOwnerBiz.searchPetOwnerBynamepwd(name, pwd);
11         if(null!=poname) {
12             //創建Cookie
13             Cookie cookie = new Cookie("poname",poname);
14             //設置Cookie的最大有效性    秒
15             cookie.setMaxAge(300);
16             //寫入Cookie
17             response.addCookie(cookie);
18             HttpSession session=request.getSession();
19             session.setAttribute("poname", poname);
20             response.sendRedirect("main.jsp");
21             
22         }
23     }

 

 1 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 2         /*
 3          * 獲取保存的Cookie,從該Cookie中獲取保存的用戶登錄信息
 4          * 如果存在將信息保存在session/request作用域重定向或轉發到某個servlet,或頁面
 5          * 如果沒有信息,則直接重定向到登錄界面
 6          */
 7         //獲取本地的Cookie
 8         Cookie[] cookies = request.getCookies();
 9         String poname=null;
10         //循環Cookie數組,找到需要的cookie對象,拿到用戶保存的登錄信息
11         for(int i=0;i<cookies.length;i++) {
12             Cookie cookie=cookies[i];
13             if("poname".equals(cookie.getName())) {
14                 poname=cookie.getValue();
15                 break;
16             }
17         }
18         if(null!=poname) {
19             HttpSession session=request.getSession();
20             session.setAttribute("poname", poname);
21             response.sendRedirect("main.jsp");
22             return;
23         }
24         response.sendRedirect("login.jsp");
25         
26     }

 

 1 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 2         //設置字符編碼集
 3                 request.setCharacterEncoding("UTF-8");
 4                 response.setCharacterEncoding("UTF-8");
 5                 //獲取用戶提交請求校驗的信息
 6                 String name=request.getParameter("name");
 7                 String pwd=request.getParameter("pwd");
 8                 
 9                 //接收校驗後返回的結果
10                 String poname=petOwnerBiz.searchPetOwnerBynamepwd(name, pwd);
11                 if(null!=poname) {
12                     
13                     HttpSession session=request.getSession();
14                     session.setAttribute("poname", poname);
15                     response.sendRedirect("main.jsp");
16                     //return;
17                  }else {
18                      response.sendRedirect("login2.jsp");
19                  }
20 
21          }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章