一、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 }