1. 程式人生 > 實用技巧 >JSP學習3

JSP學習3

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。