JSP學習3
阿新 • • 發佈:2020-12-19
Cookie
在JSP中使用cookie
建立cookie
Cookie objcookie = new Cookie("mycookie","Cookie test");
建立了Cookie之後,該Cookie資料還必須傳送到客戶端。
response.addCookie(objcookie);
讀Cookie
Cookie[] 陣列變數名 = request.getCookies();
在客戶端傳來的Cookie資料型別都是陣列型別,因此要得到其中某一項指定的Cookie物件,需要遍歷陣列來找。呼叫getName()方法檢查各個Cookie的名字,直至找到目標Cookie,然後對該Cookie呼叫getValue()方法取得與指定名字關聯的值。
<% Cookie[] cookies = request.getCookies(); if(cookies=null){ out.println("no cookie"); }else{ for(int i=0;i<cookies.length;i++){ if(cookies[i].getName().equals("cookie_name")){ out.println(cookies[i].getValue()+"<br/>"); } } } %>
設定Cookie的存在期限
<%
Cookie login = new Cookie("today","true");
login.setMaxAge(86400);
reponse.addCookie(login);
%>
刪除Cookie
必須使用前面的setMaxAge()方法,並將Cookie的存在期限設定為0.
login.setMaxAge(0);
writeCookie.jsp寫入一個Cookie到客戶端
<%@ page contentType="text/html;charset=gb2312"%> <html> <head> <title>操縱Cookie示例-寫入Cookie</title> </head> <body> <h2>操縱Cookie示例-寫入Cookie</h2> <% try { Cookie _Cookie = new Cookie("mycookie", "COOKIE_TEST"); _Cookie.setMaxAge(10 * 60); // 設定Cookie的存活時間為10分鐘 response.addCookie(_Cookie); // 寫入客戶端硬碟 out.print("已經把Cookie寫入客戶端"); } catch (Exception e) { System.out.println(e); } %> </body> </html>
readCookie.jsp
<%@ page contentType="text/html;charset=gb2312"%> <html> <head> <title>操縱Cookie示例-讀取Cookie</title> </head> <body> <h2>操縱Cookie示例-讀取Cookie</h2> <% // 將當前站點的所有Cookie讀入並存入Cookies陣列中 Cookie[] Cookies = request.getCookies(); Cookie sCookie = null; String cookieName = null; String cookieValue = null; if (Cookies == null) // 如果沒有任何Cookie out.print("沒有Cookie"); else { try { if (Cookies.length == 0) { System.out.println("客戶端禁止寫入cookie"); } else { for (int i = 0; i < Cookies.length; i++) { // 迴圈列出所有可用的Cookie sCookie = Cookies[i]; cookieName = sCookie.getName(); cookieValue = sCookie.getValue(); if (cookieName.equals("mycookie")) { out.println(cookieName + "->" + cookieValue + "<br>"); break; } } } } catch (Exception e) { System.out.println(e); } } %> </body> </html>
readCookie.jsp必須注意兩個問題;一是讀取Cookie陣列時需要判斷是否為null,為空則不能進行下一步操作。二是對Cookie的陣列長度進行判斷,如果Cookie.length=0,說明該客戶端瀏覽器不支援Cookie。