使用url重寫實現Session跟蹤

2021-05-24 02:33:22 字數 1916 閱讀 4445

使用url重寫實現session跟蹤

這是在瀏覽器不支援cookie的情況下,servlet引入的一種補充的會話機制。當使用者發出下一次請求時,如果請求訊息中沒有包含cookie頭字 段,servlet引擎則認為客戶端不支援cookie,他將依據請求url引數中的會話標識號來實施會話跟蹤。這種方式要求響應訊息中出現的超連結位址 後面附帶會話標識號引數,使用者也必須通過超連結來提交後續的訪問請求。

這種技術成為url重寫,tomcat傳送給客戶端的會話標識號的cookie名稱為jsessionid。url重寫就是將jsessionid關鍵字 作為引數名和將會話標識號作為引數附加到url後面。如果瀏覽器不支援cookie或者關閉cookie,就必須對所有可能被客戶端訪問的請求路徑進行 url重寫,如超連結,form表單的action屬性和重定向的url

httpservletresponse介面定義了兩個用於url重寫的方法:

encodeurl方法,用於超連結和form表單的action屬性中設定的url進行重寫

encoderedirecturl 方法 用於對傳遞給httpservletresponse.sendredirect方法的url進行重寫

他們根據請求訊息中是否含有cookie頭字段來決定是否進行url重寫。把url作為引數傳遞給這兩個方法,他們就能完成url重寫,在url後面新增 jsessionid引數及其值。可以關閉瀏覽器的cookie,然後,進行實驗,在網頁原始檔中檢視url後面是否有jsessionid引數及其值。

session的持久化

客戶端訪問了某個能開啟會話功能的資源, web伺服器就會建立乙個與該客戶端對應的httpsession物件,每個httpsession物件都要站用一定的記憶體空間。如果在某一時間段內訪問 站點的使用者很多,web伺服器記憶體中就會積累大量的httpsession物件,消耗大量的伺服器記憶體,即使使用者已經離開或者關閉了瀏覽器,web伺服器 仍要保留與之對應的httpsession物件,在他們超時之前,一直占用web伺服器記憶體資源。

web伺服器通常將那些暫時不活動但為超時的httpsession物件轉移到檔案系統或資料庫中儲存,伺服器要使用他們時再將他們從檔案系統或資料庫中裝載入記憶體,這種技術稱為session的持久化。

將 httpsession物件儲存到檔案系統或資料庫中,需要採用序列化的方式將httpsession物件中的每個屬性物件儲存到檔案系統或資料庫中;將 httpsession物件從檔案系統或資料庫中裝載如記憶體時,需要採用反序列化的方式,恢復httpsession物件中的每個屬性物件。所以儲存在 httpsession物件中的每個屬性物件必須實現serializable介面。

session的持久化的作用:

1.提高伺服器記憶體的利用率,保證那些暫停活動的客戶端在會話超時之前繼續原來的會話

2,在多台web伺服器協同對外提供服務的集群系統中,使用session的持久化技術,某台伺服器可以將其中發生改變的session物件複製給其他伺服器。保證了在某台伺服器停止工作後可以由其他伺服器來接替它與客戶端的會話

3,在乙個web應用程式重啟時,伺服器也會持久化該應用程式中所有httpsession物件,保證客戶端的會話活動仍可以繼續。

tomcat使用session manager 類來管理session的持久化,他提供了兩個sessionmanager類

org.apache.catalina.session.standardmanager

org.apache.catalina.session.persistentmanager

standardmanager是tomcat預設使用的,在web應用程式關閉時,對記憶體中的所有httpsession物件進行持久化,把他們儲存到檔案系統中。預設的儲存檔案為

persistentmanager比standardmanager更為靈活,只要某個裝置提供了實現org.apache.catalina.store介面的驅動類,persistentmanager就可以將httpsession物件儲存到該裝置

yii2 0中url重寫實現方法

在yii框架裡有前台和後台頁面,舉例前台url重寫。控制器以controller作為字尾,繼承自yii web controller 動作以action作為字首,public訪問修飾 控制器id 類名去字尾,全部轉為小寫,如果是駝峰命名多個單詞轉為中槓分割 動作id 去字首,全部轉為小寫,如果是駝峰...

乙個url重寫例項

需要對諸如http song2.cn viewnews 2009 3 2.html的url進行重寫.將其重寫為http song2.cn viewnews.aspx?id 2 year 2009 month 3 我們來看這個url,http song2.cn viewnews 2009 3 2.ht...

使用HttpHandler實現URL重寫

本文所講的是使用asp.net中的httphandler實現url重寫的,它所實現的原理請看這裡,本程式可以處理任何url,因為我在程式中使用了url過慮,只有訪問檔名是數字的才進行處理,並指在內部執行乙個新的頁面,並輸出資料,如下 當然你首先要做的是先建乙個類,並繼承自ihttphandler,然...