Cookie:將會話相關的資料儲存到瀏覽器中,並且在每次訪問伺服器時都帶過去
1javax.servlet.http.Cookie,可以直接利用此類的構造方法建立一個Cookie,建立出來的Cookie需要設定一個名稱和值
2response身上具有addCookie的方法,可以將建立出來的組織成響應訊息中的set-cookie頭,通知瀏覽器儲存該cookie
3request身上具有getCookies方法,可以擷取瀏覽器帶過來的所有Cookie
4Cookie方法:注意,瀏覽器是根據cookie的名稱加上cookie的path來區分是否是同一個cookie的,如果需要覆蓋之前的cookie,除了保證名稱相同外還要保證path也相同
public Cookie(String name,String value)利用構造方法建立一個Cookie對象,在建立的時候就要指定該Cookie的名和值
setValue與getValue方法 設定或者擷取Cookie的值
setMaxAge與getMaxAge方法 如果不設定cookie的MaxAge(或將其值設定為負值),則預設情況下瀏覽器會將cookie儲存在瀏覽器的記憶體中,會隨著瀏覽器關閉而消失。如果設定為一個正值,則代表該Cookie要儲存的以秒為單位的時間值,如此,該cookie將會被瀏覽器儲存到硬碟中去。如果將MaxAge設定為0,則是通知瀏覽器去刪除該Cookie。
setPath與getPath方法 用來指定訪問哪個ULR及其子URL時帶上此cookie,如果不設定此值,則瀏覽器預設會將發送該cookie的servlet所在的路徑作為path使用。
例如:
setPath("/Day06")則/Day06/.../...的路徑都會帶上該Cookie
如果發送該Cookie的Servlet是 /Day06/servlet/Demo1Servlet,並且未設定setPat,則瀏覽器在訪問/Day06/servlet/..時會帶上該cookie
setDomain與getDomain方法 設定cookie對應的網域名稱,此方法一旦調用,則瀏覽器會認為該cookie是一個第三方cookie而拒收
getName方法 擷取該cookie的名字,注意沒有setName方法,一個Cookie一旦建立出來就不能修改名字了
HttpSession:在伺服器中,為瀏覽器建立獨一無二的記憶體空間,在其中儲存會話相關的資訊。
1session作為域使用:他是j2ee中四大域對象之一,作用範圍為整個會話。
2session的生命週期:在第一次調用reqeust.getSession()方法的時候,伺服器會檢查是已經有對應的session,如果沒有就在記憶體中建立一個session並返回。
當一段時間內session沒有被使用,一般為30分鐘(此值可以在web.xml中配置<session-config>來配置,也可以使用TomcatManager進行配置),則伺服器會銷毀該session
當伺服器強行關閉時,沒有到期的session也會跟著銷毀。
如果調用session提供的invalidate(),可以立即銷毀session。
3session的原理:在伺服器第一次調用request.getSession()方法的時候,會在記憶體中建立一個session對象,此對象具有一個獨一無二的id值,此id值將會以cookie(JSESSIONID)的形式發送給瀏覽器,瀏覽器以後每次訪問都會帶著此cookie,伺服器就利用此cookie區分瀏覽器找到對應的session空間。
4同一電腦內的不同瀏覽器使用同一session:JSESSIONID這個cookie預設是儲存在瀏覽器記憶體中的,我們可以自己建立一個同名同path的Cookie,並設定maxage值,使其被儲存在硬碟中,從而實現統一電腦中不同瀏覽器公用一個JSESSIONID從而使用同一個session。
5使禁用Cookie的瀏覽器也可以使用session:由於session是基於cookie啟動並執行,如果禁用了cookie則會導致session不可用,我們可以將提供給這種瀏覽器的所有的URL進行重寫,在所有的URL後跟上JSEESIONID,從而保證即使禁用了Cookie也能以URL的形式帶回JSESSIONID,從而可以使用session。要重寫所有的URL是一項成本很高的工作,一般我們不會這麼做。
response. encodeRedirectURL(java.lang.String?url)如果此url是作為重新導向操作的地址時使用此方法
response. encodeURL(java.lang.String?url)如果此url是普通串連則使用此方法