999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Asp.Net頁面間數據共享方法探討

2009-04-29 00:00:00賈宗星,張麗
電腦知識與技術 2009年25期

摘要:使用ASP.NET開發Web應用,網頁間經常需要數據共享,通過實例討論了幾種數據傳遞和共享模式,包括最常見的使用QueryString和Server.Transfer傳參,以及使用Server控件、Applicaton對象、Session對象、Cookie對象、文件file和數據庫達到數據共享,并對其作了分析比較總結,在應用時應根據實際情況采用不同的方案。

關鍵詞:ASP.NET;數據共享;Server控件;傳值

中圖分類號:TP312文獻標識碼:A文章編號:1009-3044(2009)25-7129-03

Asp.Net Inter-page Data Sharing Methods Discussion

JIA Zong-xing, ZHANG Li

(Shanxi Agricultural University Modern Educational Technology College, Taigu 030801,China)

Abstract: Web page usually needs data sharing frequently, when we use ASP.NET to develop the Web application. The paper discussed several patterns of data transfer and data sharing through the examples, including most common QueryString and Server.Transfer., as well as uses Server controls、Application、Session、Cookie、File and Database achieved data sharing, and made the analysis comparison to it to summarize, when application should act according to the actual situation to use the different plan.

Key words: ASP.NET; data sharing; server control; data transfer

Asp.Net是繼Asp之后,微軟提出的用于創建動態網頁的一種強大的服務器端技術。而動態網頁間的數據共享問題一直是建立Web網站中的主要技術和安全隱患。除了可使用最常見的QueryString和Server.Tranfer進行數據傳遞[1]ASP.NET中可以通過Web服務器控件、Application、Session、Cookie、文件file來共享數據,為用戶數據共享提供了多種選擇。下面就各種數據共享方式進行舉例分析比較。

1 數據共享方式分析比較

我們在制作Web網站時,會使用多個網頁來完成特定的工作,這樣的話,這些網頁間的數據傳遞及共享是不可避免的。ASP.NET為我們提供了幾種方式: QueryString、Server.Transfer方法、Server控件、Application、Session、Cookice、File對象和數據庫來實現。下面分別一一介紹。

2 使用Querystring

Querystring傳遞值是最簡單和最方便的方法,但其安全性不好。其缺點就是會把要傳送的值顯示在瀏覽器的地址欄中。另外,URL的參數傳遞只能是簡單的數據類型,如整型,字符串等,不能夠傳遞對象。如果你想傳遞一個安全性不是那么太重要或者是一個簡單的數值時,用此方法最好不過了。下面通過一個小例子來完成傳值工作,步驟如下:

1) 創建一個源頁面webform1,放置一個button1,兩個TextBox1,TextBox2

2) 為button按鈕創建click事件,代碼如下:

private void Button1_Click(object sender, System.EventArgs e)

{string url;

url=\"webform2.aspx?name=\" + TextBox1.Text + \"address=\" + TextBox2.Text;

Response.Redirect(url);

}

3) 新建一個目標頁面命名為webform2,放置兩個Label1,Label2。在webform2的Page_Load中添加代碼:

private void Page_Load(object sender, System.EventArgs e)

{Label1.Text=Request.QueryString[\"name\"];

Label2.Text=Request.QueryString[\"address \"];

}

運行,即可看到傳遞后的結果了。

這種方法的缺點是:使用明碼傳遞參數,也就是不需要保密的參數,同時在使用querystring傳值得時候不能傳遞對象,參數的長度不能大于1024字節。當參數中有中文的時候,通常需要使用HttpUlitity.UrlEncode方法來對參數進行編碼和解碼。

3 使用Server.Transfer

雖然這種方法有點復雜,但也不失為一種在頁面傳值的方式。舉個例子看看:

1) 創建一個源頁面webform1,放置一個button1,兩個TextBox1,TextBox2,

2) 為button按鈕創建click事件,代碼如下:

private void Button1_Click(object sender, System.EventArgs e)

{Server.Transfer(\"webform2.aspx\");}

3) 創建過程來返回TextBox1,TextBox2控件的值代碼如下:

public string Name

{ get

{ return TextBox1.Text; }

}

public string Address

{get

{ return TextBox2.Text; }

}

4) 新建一個目標頁面命名為webform2,放置兩個Label1,Label2,在其Page_Load中添加如下代碼:

private void Page_Load(object sender, System.EventArgs e)

{WebForm1 wf1; //創建原始窗體的實例

wf1=(WebForm1)Context.Handler; //獲得實例化的句柄

Label1.Text=wf1.Name;

Label2.Text=wf1.Address;

}

使用Querystring和Server.Transfer區別:1)切換對象不同,Querystring[2]中可以切換到任何存在的網頁,而Server.Transfer只能切換到同目錄或子目錄的.aspx網頁;2) Querystring瀏覽器地址欄所呈現的結果不同,切換到另一個網頁后,瀏覽器地址欄顯示新網址及附帶相關數據,而Server.Transfer仍然顯示舊的地址不顯示傳送的數據;3)傳送的數據量不同,Querystring只能傳送2KB以內的數據,Server.Transfer則可傳送超過2KB的數據。所以,從切換對象來看,Querystring功能比較多,但Server.Transfer具有保密功能,且傳送的數據量大。

4 其他方法

4.1 Sever控件

創建一webform頁面,頁面上放置一個TextBox,其屬性值設置為:runat=\"sever\" id=\"sData\"visible=False,再放置一個button,其屬性值設置為:Text=\"PostBack\"OnClick=\"Button_Click\"。

在其Page_Load中添加如下代碼:

private void Page_Load(object sender, System.EventArgs e)

{Int gData

gData=gData+100

sData.Text=Val(sData.Text)+100;

Respone.Write(\"gData=\" gData \"

\"

Respone.Write(\"sData=\" Val(sData.Text))

}

第一次網頁顯示的結果為:

gData=100

sData=100

在按下“PostBack”按鈕后,gData為100,sData為200。連續按幾次后,gData的值一直為100,而sData的值每按一次就增加100,結果如表1。

從上我們可看出,一般變量無法作為共享數據,而Server控件可以成為同一網頁在不同狀態下(網頁第一次被加載、按鈕被按下、事件發生時等狀態)的共享數據。

4.2 使用Application

Application[\"name\"]=\"李明\";

任意一個頁面可以這樣接收:

string str = Application[\"name\"].ToString():

使用Application變量[3]也可以實現頁面間傳遞值,Application變量在整個應用程序生命周期中都是有效的,類似于使用全局變量一樣;所以可以在不同的頁面中對它進行存取。多個請求訪問時可以共享這一個變量,均可對它進行操作,該變量可以被整個應用程序的各個頁面直接使用。其優點是使用簡單,消耗較少的服務器資源,不僅能傳遞簡單數據,還能傳遞對象,并且數據量大小是不限制的;缺點是Applicatio n變量作為全局變量容易被誤操作。

4.3 使用Session

Session[\"name\"]=\"李明\";

任意一個頁面可以這樣接收:

string str=Session[ \"name\"].ToString():Session. Remove( \"name\") ; //釋放掉該Session所占用的服務器資源

使用Session變量[4]和Applicatio n變量非常類似,與Application變量的區別是當有多個請求訪問時,每個請求有各自的Session變量,且只能對自己的該Sessio n變量進行操作,整個應用程序的各頁面直接使用這個變量來獲得用戶的基本信息。其優點是使用簡單,不僅能傳遞簡單數據類型,還能傳遞對象,不僅可以把值傳遞到下一個頁面,還可以交叉傳遞到多個頁面,直至把Session變量的值removed后,變量才會消失;缺點是使用Session變量往往會占用服務器端的內存使用,所以在網頁流量很大的時候,Session便不能很好的完成傳值得任務,由于session有一個timeout,所以在使用的時候對用戶的操作也有一定的影響。

4.4 使用Cookie

與Session一樣,作用于用戶個人,但是有個本質的區別,即Cookie是存放在客戶端的,而Session是存放在服務器端的。Cookie要配合ASP.NET內置對象Request來使用。

HttpCookie mycookie=new HttpCookie(\"name\");

mycookie.Value=\"李明\";Response. AppendCookie(mycookie);

在任意頁面讀取Cookie中存放的數據:

string str =Request.Cookies [\"name\"].Vale;

Cookie[5]作為一種提交請求時保存數據的方式,有很明顯的優缺點:瀏覽器對 Cookie 的大小有限制,只有不超過 4096 字節才能保證被接受,不能保存對象,另外,作為保存時間,也就是數據的有效期來說,卻是保存得最好的。我們可以通過設置cookie得過期時間等屬性來設置。

4.5 使用文件(File)

文件和Application類似,可供不同連接者的所有網頁共享,但其生命周期比Application對象長,Application會在IIS結束執行或關機時結束生命周期,而文件則不受此限制。方法:

使用StreamReader對象:

StreamReader sReader=New SreamReader(“文件路徑名“,Encoding.Deafault);

String S1=sReader.ReadLine(); //讀取串流的下一行數據

String S2=sReader.ReadToEnd();//讀取串流接下來的所有數據

除了上述方法外,還可使用數據庫來進行數據共享,在此我們不做詳細介紹。

5 總結

下面針對不同的情況對ASP.NET數據共享模式作一個小結,如表2所示。

1) 同一網頁:同一網頁因為發生某事件(如按下按鈕)而產生多種不同狀態的網頁,這類網頁以Server控件作為共享數據最為普遍。

2) 同一瀏覽窗口、不同網頁:若有某項工作需使用多個網頁來完成,則當使用者開啟瀏覽窗口后,會先瀏覽第一個網頁,而后隨著網頁的操作進入第二個網頁、第三個網頁……,但整個操作過程都在同一個瀏覽窗口上進行(沒有額外開啟另一個瀏覽窗口)。這類網頁所采用的共享數據可采用常用的Querystring和Server.Transfer方法,及Session對象和Cookie對象。

3) 同一部機器、不同瀏覽窗口(可能瀏覽相同或不同網頁):使用者在同一部機器上,開啟多個瀏覽器,而這些瀏覽窗口可能瀏覽相同網頁或不同網頁。這種情況可使用Cookie對象共享數據。

4) 不同機器:不同使用者在不同機器上瀏覽相同或不同的網頁。這種情況以Application對象、文件、數據庫為共享數據最為普遍。

參考文獻:

[1] 徐少華,張華偉,李浩.在ASP.NET中實現Web頁面值傳遞方法的比較[J].武漢理工大學學報:信息與管理工程版,2006, 28(6):37-40.

[2] 王國榮.ASP.NET網頁制作教程——從基本語法學起[M].武漢:華中科技大學出版社,2002.

[3] 劉永建.ASP. NET網頁間傳值方法探討[J].計算機與網絡,2008(15):169-170,174.

[4] Russ Basiura,Richard Conway.Professional ASP.NET Security ASP.NET安全性高級編程[M].王曉娜,黃開枝,譯.北京:清華大學出版社,2003.

[5] 孟永定,初探Asp.net中參數傳遞的實現方法[J].甘肅科技,2007,23(11):73-74,42.

主站蜘蛛池模板: 亚洲国产日韩在线成人蜜芽| 亚洲天堂在线免费| 亚洲欧洲综合| 精品福利网| 国产理论精品| 国产97色在线| a毛片免费观看| 经典三级久久| 久久夜色撩人精品国产| 欧美日韩综合网| 欧美激情网址| 天天色综合4| 制服丝袜国产精品| 国产精品污视频| 毛片基地美国正在播放亚洲| 偷拍久久网| 国产午夜无码专区喷水| v天堂中文在线| 欧美中文字幕一区二区三区| 亚洲天堂精品在线| 茄子视频毛片免费观看| 内射人妻无套中出无码| 欧美日韩国产系列在线观看| 中文字幕亚洲专区第19页| 亚洲成人福利网站| 国产精品色婷婷在线观看| 日本福利视频网站| 国产又色又刺激高潮免费看| 亚洲无线一二三四区男男| 高清不卡一区二区三区香蕉| 久久这里只有精品66| 国产日韩欧美一区二区三区在线| 亚洲永久免费网站| 国产精品福利在线观看无码卡| 91精品国产91欠久久久久| 999精品免费视频| 一级毛片免费高清视频| 亚洲成在线观看 | 夜夜爽免费视频| 国语少妇高潮| 国产十八禁在线观看免费| 亚洲国产第一区二区香蕉| 国产成人夜色91| 在线国产毛片| 国产激爽大片在线播放| 54pao国产成人免费视频| 一边摸一边做爽的视频17国产 | 伊人久久精品无码麻豆精品 | 久久久噜噜噜久久中文字幕色伊伊 | 日韩高清一区 | 国产精品hd在线播放| 国产美女主播一级成人毛片| 91丝袜乱伦| 国产成人免费| 少妇人妻无码首页| 国产成人调教在线视频| 日韩欧美国产精品| 91福利一区二区三区| 亚洲欧美一区二区三区图片| 国产一在线| 日本在线欧美在线| 久久国产精品影院| 亚洲欧洲综合| 999福利激情视频| 亚洲—日韩aV在线| 国产自在线播放| 国产自无码视频在线观看| 99无码中文字幕视频| 国产一区二区丝袜高跟鞋| 91精品国产综合久久不国产大片| 欧美性精品| 伊人久久精品无码麻豆精品| 综合社区亚洲熟妇p| 欧美日本激情| 欧美成人第一页| 99精品热视频这里只有精品7| 真实国产乱子伦高清| 91在线激情在线观看| 污视频日本| 国产人在线成免费视频| 免费人成黄页在线观看国产| 国产成人亚洲综合A∨在线播放|