這個問題是上週去遠洋公司面試的一道筆試題,面試的時候面試官也問到了,雖然事先有所準備當時也回答上了,但是從根本上說自己還不太理解。剛好這兩天做高效平台評教系統的時候用到了頁面傳值,就又從網路上查了一些相關資料。
常用的頁傳值有以下幾種:QueryString傳值,Session傳值,Cookies傳值,Application以及Transfer傳值。下面我們就一起了解各種傳值方式的工作機制、相互連結、以及優缺點。
# QueryString傳值稱為URL傳值,是我們常用的也是較簡單的傳值方式,它透過把我們需要傳遞的資料拼接到連接位址中傳輸到目標位址。
優點:URL傳值操作簡單,而且被所有瀏覽器支持,對於字串類型的資料傳輸十分有效。
缺點:安全係數不高,它把我們需要傳輸的資料完全暴露在網址列中,如果不通過加密技術,對於安全性高的資料採用URL傳值就有些不太理智了。而且該方式對於資料型別有要求,一般只能傳遞字串,對於陣列以及物件的傳遞不可使用該方式。
Session傳值相信大家一定不會陌生,它跟Application有一些共同點,也有不同之處。它是一個有作用域的全域變量,舉個例子:對於一個應用網站來說,Session可以單一使用者的信息。 Application是沒有區域限制的全域變量,它可以儲存整個網站的信息,比如說網站的即時存取量。
優點:使用較簡單,不僅可以傳輸數據,還可以傳輸對象,數據量的大小不受限制。
缺點:在Session變數中儲存大量的資料會消耗較多的伺服器資源,資料容易遺失。
# 這個傳值方式大家可能聽得或用的比較少,反正我是沒有用過。把它與上面的Session傳值連結起來相信我們理解起來就好多了。它在整個應用程式的生命週期中都是有效的,跟全域變數一樣,因此可以在任何一個頁面對其進行訪問操作。
優點:使用簡單,消耗較少的伺服器資源,不僅可以傳遞數據,還可以傳遞對象,資料量大小不受限制。
缺點:作為全域變數容易被誤操作。
Cookies傳值大家再熟悉不過了,常用電腦和手機的人可能都會清理垃圾的時候發現有一項就是清理Cookies,當我們清理了之後,發現一些常用網站先前儲存的使用者名稱和密碼需要重新輸入。這就是Cookies的作用所在,它常用於在用戶瀏覽器上儲存一些與用戶相關的信息,例如我們的用戶名密碼,當我們登陸的時候選擇了保存用戶名密碼,信息就會被存入Cookies,下次登入的時候不需要我們人為地輸入。所以我們清理垃圾的時候要根據需要選擇是否清除這一項。 Cookies跟Session也有一些相似之處就是都是針對有單一使用者的,但它們本質上的差別在於Session儲存在伺服器端,而Cookies儲存在客戶端。
優點:使用簡單,保存使用者狀態的一個非常有效的方法,資訊全部儲存在客戶端不會對伺服器造成壓力。
缺點:安全性不高,容易被偽造,帶給使用者一定的記憶體垃圾。
Transfer傳值比較先進,只有Transfer才能算是物件導向軟體設計所使用的方法。使用Transfer方法把流程從目前頁面引導到另一個頁面中,也就是我們常說的重定向,新的頁面使用前頁面的應答流,所以這個方法是完全面向對象的。
優點:直接在伺服器端進行重定向,使用簡單方便,減少了用戶端對伺服器的請求,可以傳遞各種資料類型的值和控制項的值。
缺點:用戶端瀏覽器中URL位址不會發生變化,因此可能會導致在新的頁面出現一些意圖不到的情況。例如原頁面跟目標頁不在同一個虛擬目錄下或其子目錄下,有些使用相對路徑的圖片或超連結都會導致錯誤的定向。
以上就是ASP.NET頁面值的內容,更多相關內容請關注PHP中文網(www.php.cn)!