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