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