保持狀態(tài)的四種方法:網(wǎng)址重寫脚粟,隱藏域覆旱,Cookie和HttpSession對象
2.1網(wǎng)址重寫
一種session追蹤技術(shù),將一個(gè)或者多個(gè)token作為查詢字符串添加到一個(gè)URL中
token格式為鍵=值核无;
語法:url?key-1=value1&key-2=value2&key-3=value3
缺點(diǎn):
有些瀏覽器URL長度有限制
僅當(dāng)有鏈接要插入值時(shí)扣唱,值才能轉(zhuǎn)換成后面的資源
網(wǎng)址重寫必須在服務(wù)器端有效。所有鏈接都必須帶有值
某些字符需要進(jìn)行編碼
添加到URL的信息是可見的
使用域:
需要保持团南,不跨越太多頁面噪沙,信息不太重要
2.2 隱藏域
將值放在HTML表單的隱藏域中。
只有當(dāng)頁面包含表單或者在頁面中添加表單的時(shí)候吐根,且不需要跨越多個(gè)頁面時(shí)正歼,才會使用隱藏域
2.3 cookie
自動(dòng)地在web服務(wù)器和瀏覽器之間來回傳遞的一小塊信息,適用于需要跨越許多頁面的信息
cookie是作為HTTP標(biāo)頭嵌入的拷橘,傳輸它的過程由http協(xié)議處理
創(chuàng)建cookie Cookie cookie = new Cookie(name,value);
可以設(shè)置cookie的domain朋腋,path,maxAge屬性
將cookie發(fā)送到瀏覽器使用HttpServletResponse.add(Cookie cookie)方法
訪問瀏覽器返回的cookie膜楷,使用HttpServletRequest.getCookies()方法
要?jiǎng)h除cookie旭咽,添加一個(gè)同名cookie,并將其maxAge設(shè)置為0
2.4 HttpSession對象
獲取HttpSession對象
HttpServletRequest.getHttpSession()
HttpServletRequest.getHttpSession(boolean create)
方法:
void setAttribute(String name,Object value) ?傳遞已有名稱時(shí)赌厅,關(guān)聯(lián)新值
Object getAttribute(String name) ?獲取名稱對應(yīng)的值
String getId() ? 獲取HttpSession的標(biāo)識符
void invalidate() ?強(qiáng)制過期
long getMaxInactiveInterval() HttpSession在用戶最后一次訪問后還可以維持多久
void setMaxInactiveInterval(long millionSeconds) ?設(shè)置為0時(shí)永不過期