COOKIE
1.COOKIE
HTTP COOKIE實質是服務端與在客戶端之間傳送的普通HTTP頭,可保存也可不保存在客戶的硬盤上.如果保存,每一個文件大小不超過4K的文本文件.多個COOKIE可保存到同一個文件中. 如果從編程角度來看,在JSP中COOKIE就是JAVA提供的一個類.常用的方法如下所表示,因為客戶端可能不接受COOKIE,所以建議不用它,改用SESSION等其他方式。
HTTP COOKIE實質是服務端與在客戶端之間傳送的普通HTTP頭,可保存也可不保存在客戶的硬盤上.如果保存,每一個文件大小不超過4K的文本文件.多個COOKIE可保存到同一個文件中. 如果從編程角度來看,在JSP中COOKIE就是JAVA提供的一個類.常用的方法如下所表示,因為客戶端可能不接受COOKIE,所以建議不用它,改用SESSION等其他方式。
public class cookie
{
public String getDomain() //返回該COOKIE的有效域
public int getMaxAge() //返回該COOKIE的有效期,單位為秒
public String getName() //返回該COOKIE的名稱
public String getPath() //返回該COOKIE的有效路徑
public boolean getSecure() //返回該COOKIE的安全設置
public String getValue() //返回該COOKIE的值
public void setDomain(java.lang.String pattern) //設置該COOKIE的有效域
public void setMaxAge(int expiry) //設置該COOKIE的有效期,單位為秒
public void setPath(java.lang.String uri) //設置該COOKIE的有效路徑
public void setSecure(boolean flag) //設置該COOKIE的安全設置
public void setValue(java.lang.String newValue) //設置該COOKIE的值
}
一個COOKIE包含以下五部分:
NAME/VALUE對,設置該COOKIE的名字及它保存的值
COOKIE通常和服務器相關,如果將域設為JAVA.SUN.COM,那么該COOKIE就和這個域相關,只對該網址起作用,當瀏覽該網址時,瀏覽器將把該COOKIE的內容發送給服務端,COOKIE是作為HTTP HEADER的一部分被發送的,如果沒有設置域,那么COOKIE就只和創建該COOKIE的服務器相關.
路徑用于指定服務器上可以使用該COOKIE的文件所在的路徑,它只對該網址下的該路徑下的應用起作用."/"表示服務器上所有目錄都可以使用該COOKIE.
COOKIE都有一個有效期,有效期默認值為-1,這表示沒有保存該COOKIE,當該瀏覽器退出時,該COOKIE立即失效.
安全選項true/false,如果設置為true,那么在服務端與在客戶端之間傳送該COOKIE的內容時,采用HTTPS協議.
如何檢查一個客戶端是否支持COOKIE的方法:
用下面的方法寫一個COOKIE到客戶端,并確認成功
try
{
Cookie c = new Cookie("mycookie","COOKIE TEST");
response.addCookie(c);
}
catch(Exception e)
{
????? System.out.println(e);
}
COOKIE通常和服務器相關,如果將域設為JAVA.SUN.COM,那么該COOKIE就和這個域相關,只對該網址起作用,當瀏覽該網址時,瀏覽器將把該COOKIE的內容發送給服務端,COOKIE是作為HTTP HEADER的一部分被發送的,如果沒有設置域,那么COOKIE就只和創建該COOKIE的服務器相關.
路徑用于指定服務器上可以使用該COOKIE的文件所在的路徑,它只對該網址下的該路徑下的應用起作用."/"表示服務器上所有目錄都可以使用該COOKIE.
COOKIE都有一個有效期,有效期默認值為-1,這表示沒有保存該COOKIE,當該瀏覽器退出時,該COOKIE立即失效.
安全選項true/false,如果設置為true,那么在服務端與在客戶端之間傳送該COOKIE的內容時,采用HTTPS協議.
如何檢查一個客戶端是否支持COOKIE的方法:
用下面的方法寫一個COOKIE到客戶端,并確認成功
try
{
Cookie c = new Cookie("mycookie","COOKIE TEST");
response.addCookie(c);
}
catch(Exception e)
{
????? System.out.println(e);
}
然后在一個新的JSP文件中:用下面的方法取客戶端的COOKIE到cookies中, 如果cookies.length ==0,說明該客戶端的瀏覽器不支持COOKIE
try
{
Cookie[] cookies = request.getCookies();
if(cookies.length ==0)
{
????? System.out.println("not support cookie");
}
}
catch(Exception e)
{
????? System.out.println(e);
}
2.動態INCLUDE
用jsp:include動作實現 <jsp:include page="included.jsp" flush="true" />它總是會檢查所含文件中的變化,適合用于包含動態頁面,并且可以帶參數。
靜態INCLUDE
用include偽碼實現,定不會檢查所含文件的變化,適用于包含靜態頁面<%@ include file="included.htm" %>
===================================================================
1. 靜態include的結果是把其他jsp引入當前jsp,兩者合為一體
動態include的結構是兩者獨立,直到輸出時才合并( 看看jsp生成的java文件就可以知道了)
2.正是因為這樣,動態include的jsp文件獨立性很強,是一個單獨的jsp文件,需要使用的對象,頁面設置,都必須有自己創建,當然,還好它和include它的頁面的request范圍是一致的.
而靜態include純粹是把代碼寫在外面的一種共享方法,所有的變量都是可以和include它的主文件共享,兩者高度緊密結合,不能有變量同名的沖突.而頁面設置也可以借用主文件的.
posted on 2010-02-08 17:33 飛熊 閱讀(410) 評論(2) 編輯 收藏 所屬分類: java