1.COOKIE
HTTP COOKIE實質(zhì)是服務(wù)端與在客戶端之間傳送的普通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的安全設(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的值
}
一個COOKIE包含以下五部分:
NAME/VALUE對,設(shè)置該COOKIE的名字及它保存的值
COOKIE通常和服務(wù)器相關(guān),如果將域設(shè)為JAVA.SUN.COM,那么該COOKIE就和這個域相關(guān),只對該網(wǎng)址起作用,當(dāng)瀏覽該網(wǎng)址時,瀏覽器將把該COOKIE的內(nèi)容發(fā)送給服務(wù)端,COOKIE是作為HTTP HEADER的一部分被發(fā)送的,如果沒有設(shè)置域,那么COOKIE就只和創(chuàng)建該COOKIE的服務(wù)器相關(guān).
路徑用于指定服務(wù)器上可以使用該COOKIE的文件所在的路徑,它只對該網(wǎng)址下的該路徑下的應(yīng)用起作用."/"表示服務(wù)器上所有目錄都可以使用該COOKIE.
COOKIE都有一個有效期,有效期默認(rèn)值為-1,這表示沒有保存該COOKIE,當(dāng)該瀏覽器退出時,該COOKIE立即失效.
安全選項true/false,如果設(shè)置為true,那么在服務(wù)端與在客戶端之間傳送該COOKIE的內(nèi)容時,采用HTTPS協(xié)議.
如何檢查一個客戶端是否支持COOKIE的方法:
用下面的方法寫一個COOKIE到客戶端,并確認(rèn)成功
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.動態(tài)INCLUDE
用jsp:include動作實現(xiàn) <jsp:include page="included.jsp" flush="true" />它總是會檢查所含文件中的變化,適合用于包含動態(tài)頁面,并且可以帶參數(shù)。
靜態(tài)INCLUDE
用include偽碼實現(xiàn),定不會檢查所含文件的變化,適用于包含靜態(tài)頁面<%@ include file="included.htm" %>
===================================================================
1. 靜態(tài)include的結(jié)果是把其他jsp引入當(dāng)前jsp,兩者合為一體
動態(tài)include的結(jié)構(gòu)是兩者獨立,直到輸出時才合并( 看看jsp生成的java文件就可以知道了)
2.正是因為這樣,動態(tài)include的jsp文件獨立性很強,是一個單獨的jsp文件,需要使用的對象,頁面設(shè)置,都必須有自己創(chuàng)建,當(dāng)然,還好它和include它的頁面的request范圍是一致的.
而靜態(tài)include純粹是把代碼寫在外面的一種共享方法,所有的變量都是可以和include它的主文件共享,兩者高度緊密結(jié)合,不能有變量同名的沖突.而頁面設(shè)置也可以借用主文件的.