1. 程式人生 > >【JSP】JSP內建物件Cookie的用法

【JSP】JSP內建物件Cookie的用法

 1.什麼是Cookie.
Cookie是Web伺服器儲存在使用者硬碟上的一段文字。Cookie允許一個Web站點在使用者的電腦上儲存資訊並且隨後再取回它。
舉例來說,一個Web站點可能會為每一個訪問者產生一個唯一的ID,然後以Cookie檔案的形式儲存在每個使用者的機器上。
如果您使用IE瀏覽器訪問Web,您會看到所有儲存在您的硬碟上的Cookie。它們最常存放的地方是:c:/windows/cookies(在Win 2000中則是C:/Documents and Settings/您的使用者名稱/Cookies )
cookie是以“關鍵字key=值value“的格式來儲存紀錄的.
2.建立一個Cookie物件,呼叫Cookie物件的建構函式可以建立Cookie。Cookie物件的建構函式有兩個字串引數:Cookie名字和Cookie值。
Cookie c=new Cookie(“username”,”john”);
3. jsp中如果要將封裝好的Cookie物件傳送到客戶端,使用response的addCookie()方法。
格式:response.addCookie(c)
4.讀取儲存到客戶端的Cookie,使用request物件的getCookies()方法,執行時將所有客戶端傳來的Cookie物件以陣列的形式排列,如果要取出符合需要的Cookie物件,就需要迴圈比較陣列內每個物件的關鍵字。
例:Cookie[] c=request.getCookies();
if(c!=null)
for(int I=0;I<c.length;I++)
if(“username”.equals(c[I].getName()))
out.println(c[I].getValue());
5.設定Cookie物件有效時間:setMaxAge()。
c.setMaxAge(3600);
6.Cookie應用
  1.網站能夠精確地知道有多少人瀏覽過。
由於代理伺服器、快取等的使用,唯一能幫助網站精確統計來訪人數的方法就是為每個訪問者建立一個唯一的ID。使用Cookie,網站可以完成以下工作:
  ●測定多少人訪問過;
  ●測定訪問者有多少是新使用者(即第一次來訪),多少是老使用者;
  ●測定一個使用者多久訪問一次網站。
  網站使用資料庫達到上述目標。當一個使用者第一次訪問時,網站在資料庫中建立一個新的ID,並把ID通過Cookie傳送給使用者。使用者再次來訪時,網站把該使用者ID對應的計數器加1,得到使用者的來訪次數。
例:Cookie.jsp
<%@ page contentType="text/html; charset=GB2312"
import="java.util.Date" %>
<HTML>
<HEAD>
<TITLE>Cookie的存取</TITLE>
</HEAD>
<BODY>
<CENTER>
<FONT SIZE = 5 COLOR = blue>Cookie的存取</FONT>
</CENTER>
<HR>
<P></P>
<%
//建立Cookie變數
Cookie IntVal = new Cookie("IntVal", "100");
Cookie temp = null;
response.addCookie(IntVal); //將Cookie變數加入Cookie中
Cookie[] cookies = request.getCookies();
//取得Cookie資料
int cookielen = cookies.length;
//取得Cookie變數陣列的長度
if(cookielen != 0) //判斷是否成取得Cookie資料
{
for (int i = 0; i < cookielen; i++)
{
temp = cookies[i]; //取得cookies陣列中的Cookie變數
if (temp.getName().equals("IntVal"))
{ //判斷是否取得名為DateVal的Cookie資料
%>
Cookie中<Font color = blue>IntVal</Font>變數的值為
<Font color = red><%= IntVal.getValue()%></Font><BR>
<%
}
}
}

else
{
%>
不存在Cookie<BR>
<%
}
%>
</BODY>
</HTML>
例:CookieDate.jsp
<%@ page contentType="text/html; charset=GB2312"
import="java.util.Date"%>
<HTML>
<HEAD>
<TITLE>自Cookie存取日期/時間資料</TITLE>
</HEAD>
<BODY>
<CENTER>
<FONT SIZE = 5 COLOR = blue>自Cookie存取日期/時間資料</FONT>
</CENTER>
<P></P>
<%
Date Now = new Date(); //取得目前的系統時間
Cookie DateVal = new Cookie("DateVal", String.valueOf(Now.getTime()));
//欲將儲存至Cookie時間/日期值轉換為毫秒數
response.addCookie(DateVal); //將Cookie變數加入Cookie中
Cookie temp = null;
DateVal = null; //重設Cookie變數
Cookie[] cookies = request.getCookies();
//取得Cookie資料
int cookielen = cookies.length;
//取得Cookie變數陣列的長度
if(cookielen != 0) //判斷是否成取得Cookie資料
{
for (int i = 0; i < cookielen; i++)
{
temp = cookies[i]; //取得cookies陣列中的Cookie變數
if (temp.getName().equals("DateVal"))
{ //判斷是否取得名為DateVal的Cookie資料
%>
Cookie中<Font color = blue>DateVal</Font>
變數的值為<Font color = red>
<%= new Date(Long.parseLong(temp.getValue())) %>
</Font><BR>
<%
}
}
}
else //若無法取得Cookie資料則執行下面的敘述
{
%>
無法取得Cookie<BR>
<%
}
%>
</BODY>
</HTML>