JSP四種會話跟蹤技術
來源:互聯網
上載者:User
轉自:http://blog.sina.com.cn/s/blog_5990faac0100dnfx.html
Cookie
:伺服器在一個應答首部傳遞給瀏覽器的名稱
/
值對。瀏覽器儲存的時間由
cookie
的到期時間屬性來指定。當瀏覽器向某個伺服器
發送一個請求時,它會檢查其儲存的
cookie
,並在請求首部中包含從同一台伺服器上接收到的所有
cookie
。
Session tracking
:
在
瀏覽器和伺服器之間不直接傳送所有的狀態資訊,而只是傳遞表示符(
session
ID
)。瀏覽器發送
sessionID,
服
務器跟蹤與該會話相關聯的所有資訊。傳遞
sessionID
可以通過
cookie
和
URL
複寫技術,大部分容器都支援這兩種技術。伺服器無法分辨使用者是否關閉了瀏覽器,因此關閉瀏覽器意味
著與先前的會話關聯的所有會話資料都保留在伺服器上,直到會話逾時,伺服器銷毀會話對像。
跟蹤
同一會話中的請求的會話
ID
可以有多種方法,主要有
cookie
和
url
複寫。
URL
複寫
:把會話
ID
編碼在
URL
中。
例:
counter.jjsp;jsessionnid=be8d697876787876befdbde898789098980這樣,即使瀏覽器不支援
cookie
,也能夠實現會話跟蹤。對於
URL
複寫,伺服器從請求的
URI
中提取出會話
ID
,並把該請求與
相應的會話關聯起來,然後在訪問會話資料的時候,
JSP
頁面所進行的處理方式就和使用
cookie
跟蹤會話
id
時所使用的方式
完全相同。所以
sesssion
的實現要依靠
cookie
或
URL
複寫技術。如果想為不支援
cookie
的瀏覽器提供會話跟蹤,就必須使用
<c:url>
行為對應用程式中的所有
URL
進行複寫。這意味著應用程式中的所有頁面(至少是那些帶有對其他頁面引用的頁面)都必須是
JSP
頁面,這樣
頁面引用才能以動態方式進行編碼,如果遺漏了一個
ur
,那麼服務就會失去對會話的跟蹤。
隱藏表單域
:隱藏表單域是將會話ID添加到HTML的隱藏表單中(類型為hidden的input)。重新導向和轉寄可以使用兩種方法來調用另一
個頁面,重新導向和轉寄。i)
轉寄:
<jsp:forward
page=”userInfo.jsp”/>轉寄
,JSP
容器將使用一個內部方法來調用目標頁面,新的頁面繼續處理同一個請求,而瀏覽器不會知道這個過程涉
及到了多個頁面。瀏覽器
URL
會保持不變。ii)
重新導向
:<c:redirect
url=”userInfo.jsp”/>重新導向與轉寄不同,重新導向時,第一個頁面會通知瀏覽器發送一個新的目標頁面的請求。瀏覽
器所顯示的
URL
會變成新頁面的
URL
。重新導向的速度比轉寄要慢,因為瀏覽器得發出一個新的請求。同時,由於重新導向產生了一個
新的請求,所以經過一次重新導向之後請求範圍內的對象將無法再使用了。