第二章頁面類及基本對象_第1頁
第二章頁面類及基本對象_第2頁
第二章頁面類及基本對象_第3頁
第二章頁面類及基本對象_第4頁
第二章頁面類及基本對象_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第二章頁面類及基本對象回顧C/S和B/S動態(tài)網(wǎng)頁的工作原理:基于http,無狀態(tài)B和S間的一次往返動態(tài)處理:服務(wù)器端和客戶端。Web服務(wù)器:IIS創(chuàng)建和打開Web站點Web頁代碼模式:單文件頁,代碼后置目標ASP.NET2.0內(nèi)置對象概述Page類頁面的生命周期<@page>標簽Page_Init和Page_Load事件Page.IsPostBack屬性Response對象Response.Write();Response.Redirect();Request對象表單FormRequest.FormRequest.QueryString();Request.ServerVariablesRequest.BrowserServer對象ASP.NET2.0內(nèi)置對象概述下表是ASP.NET中的常見系統(tǒng)對象。由于這些對象是在ASP.NET頁面初始化請求時自動創(chuàng)建的,所以能在程序中任何地方直接調(diào)用,而無需對類進行實例化操作。系統(tǒng)對象ASP.NETPage對象指向頁面自身的方式。作用域為頁面執(zhí)行期。Request對象讀取客戶端在Web請求期間發(fā)送的值Response對象封裝了頁面執(zhí)行期返回到HTTP客戶端的輸出Application對象作用于整個程序運行期的狀態(tài)對象Session對象會話期狀態(tài)保持對象,用于跟蹤單一用戶的會話。Cookie對象客戶端保持會話信息的一種方式Server對象提供對服務(wù)器上的方法和屬性的訪問Page類及其生命周期一個頁面就對應(yīng)于一個page對象。.aspx與后臺代碼類(局部類)合并生成頁面類。所有的頁面類都繼承自System.Web.UI.Page類。每次查看一個頁面,page對象都會進行初始化,對信息處理,然后顯示出來,最后關(guān)閉或釋放這個對象。這就是頁面的生命周期。在這過程中,會觸發(fā)若干事件。注意:當(dāng)頁面顯示后,系統(tǒng)會馬上從服務(wù)器中釋放頁面資源。生命周期:/zh-cn/library/ms178472(VS.80).aspx頁面跟蹤的跟蹤功能,不僅可以在程序運行的各個階段,跟蹤程序的狀態(tài)和變量的值,另外,它還有本身所支持的各項管理功能。它有以下優(yōu)點:1、既可以整個網(wǎng)站統(tǒng)一管理,也可以在單個頁面啟動。通過配置web.config,可以啟用整個網(wǎng)站的跟蹤,也可以在頁面上采用。2、不影響頁面的布局和呈現(xiàn)。3、全面反映cookies和session的狀態(tài),這是我第一次采用跟蹤的一個原因。4、完整的反應(yīng)各個頁面事件的過程和執(zhí)行的時間。頁面跟蹤步驟:一、開啟頁面內(nèi)的跟蹤1、在<@page>中采用Trace="true"2、在代碼里添加“Trace.IsEnabled=true;”3、添加自己的跟蹤信息:

Trace.Warn(“abc”);

//Warn顯示的是紅色的信息

Trace.Write(“def”);

//write顯示的是普通顏色的信息二、開啟全站的跟蹤并顯示在頁面在web.config中添加

<system.web>

<traceenabled="true"pageOutput="true"/></system.web>Page對象Page對象Page對象Page_Init和Page_Load事件比較頁內(nèi)數(shù)據(jù)傳遞回發(fā)ASP.NETWeb頁面控件1控件1…用戶頁面操作Page.IsPostBack屬性回傳首次加載truefalse如何判斷回發(fā)和首次加載?IsPostBack屬性通過頁面的IsPostBack屬性,可以檢查.aspx頁是否為傳遞回服務(wù)器的頁面當(dāng)加載頁面并對控件的更改屬性進行處理之前,用戶可以在Page_Load事件中檢查該頁面是否為被回傳的頁面Page對象的Init事件和Load事件都發(fā)生在頁面加載的過程中,但在Page對象的生存周期中Init事件,只有在頁面初始化時被觸發(fā)一次,而Load事件在初次加載及每次回發(fā)中都會被觸發(fā)。當(dāng)用戶單擊頁面中按鈕時引起回發(fā),使Load事件處理代碼再次被執(zhí)行如果希望初始化頁面時的事件處理代碼只在頁面首次加載時被執(zhí)行,則可將代碼放在Init事件中,或使用Page對象的IsPostBack屬性進行判斷。Page_Init和Page_Load事件比較工序流程在服務(wù)器執(zhí)行1和2345aHTTP請求HTML頁回發(fā)之后的值進行更改67HTML頁5b用戶進行回發(fā)_VIEWSTATEKingK@******名稱電子郵件密碼提交更改之前更改之后_VIEWSTATE控件是隱藏控件,在表單提交到服務(wù)器時此控件將被添加到表單中,用來保存控件的狀態(tài)。ViewState例子int[]a=newint[6];protectedvoidPage_Load(objectsender,EventArgse){}protectedvoidButton1_Click(objectsender,EventArgse){stringstr=null;

for(inti=0;i<6;i++){a[i]=i;}

ViewState["a"]=a;}protectedvoidButton2_Click(objectsender,EventArgse){

int[]a=(int[])ViewState["a"];Label2.Text=a[2].ToString();}Request和ResponseRequestResponse頁面輸入輸出控制Request對象獲得頁面輸入URL傳參Form表單提交Response對象在頁面輸出要顯示的內(nèi)容重定向5.1Response對象Response對象的屬性和方法利用Response對象輸出文本文件利用Response對象重新定向鏈接Response對象的屬性和方法Response對象是HttpResponse類的一個對象,與一個HTTP響應(yīng)相對應(yīng),通過該對象的屬性和方法可以控制如何將服務(wù)器端的數(shù)據(jù)發(fā)送到客戶端瀏覽器。Response對象的屬性和方法屬性:Buffer:表明頁輸出是否被緩沖。BufferOutput:是否緩沖輸出并在完成處理整個頁之后將其發(fā)送。Cache:獲取Web頁的緩存策略(過期時間、保密性、變化子句)。Charset:獲取或設(shè)置輸出流的HTTP字符集。ContentEncoding:獲取或設(shè)置內(nèi)容的編碼格式。ContentType: 獲取或設(shè)置輸出流的HTTPMIME類型。Expires:獲取或設(shè)置在瀏覽器上緩存的頁過期之前的分鐘數(shù)。如果用戶在頁過期之前返回同一頁,則顯示緩存的版本。提供Expires是為了與以前的ASP版本兼容。ExpiresAbsolute:獲取或設(shè)置將緩存信息從緩存中移除時的絕對日期和時間。提供ExpiresAbsolute是為了與以前的ASP版本兼容。Filter:獲取或設(shè)置一個包裝篩選器對象,該對象用于在傳輸之前過濾HTTP實體主體。IsClientConnected:指示客戶端是否仍連接在服務(wù)器上。Response對象的屬性和方法Output:返回輸出HTTP響應(yīng)流的文本輸出。OutputStream:返回輸出Http內(nèi)容主體的二進制輸出流。Status:設(shè)置返回到客戶端的狀態(tài)欄。StatusCode:獲取或設(shè)置返回給客戶端的輸出的HTTP狀態(tài)代碼,通過HTTP狀態(tài)代碼客戶端可以知道服務(wù)器端的運行情況。StatusDescription: 獲取或設(shè)置返回給客戶端的輸出的HTTP狀態(tài)字符串。SuppressContent:是否將HTTP內(nèi)容發(fā)送到客戶端。Response對象的屬性和方法方法:BinaryWrite:將一個二進制字符串寫入HTTP輸出流。Clear:清除緩沖區(qū)流中的所有內(nèi)容輸出。ClearContent:清除緩沖區(qū)流中的所有內(nèi)容。ClearHeaders:清除緩沖區(qū)流中的所有頭信息。Close:關(guān)閉到客戶端的套接字連接。End:將當(dāng)前所有緩沖的輸出發(fā)送到客戶端,停止該頁的執(zhí)行,并引發(fā)Application_EndRequest事件。Flush:向客戶端發(fā)送當(dāng)前所有緩沖的輸出。Flush方法和End方法都可以將緩沖的內(nèi)容發(fā)送到客戶端顯示,但是Flush與End的不同之處在于,F(xiàn)lush不停止頁面的執(zhí)行。Response對象Response對象允許開發(fā)人員對當(dāng)前頁面的輸出流進行操作Response.對象Redirect方法Write方法Response.Write("Hello,ACCP");直接在頁面上輸出內(nèi)容重定向到另外一個頁面Response.Redirect("");利用Response對象輸出文本文件privatevoidPage_Load(objectsender,System.EventArgse) { //在此處放置用戶代碼以初始化頁面 Response.ContentEncoding=

System.Text.UnicodeEncoding.Default; Response.Write("<h3>利用Response對象輸出文本文件</h3>"); Response.Write("<hr>"); Response.Write("文件的內(nèi)容為:<br><br>");

StringFileName=Server.MapPath("Readme.txt"); Response.WriteFile(FileName); }利用Response對象重新定向鏈接

(1)Response.Redirect(“1.aspx”);轉(zhuǎn)到當(dāng)前目錄下的1.aspx頁面(2)Response.Redirect(“~/1.aspx”);轉(zhuǎn)到當(dāng)前網(wǎng)站根目錄下的1.aspx頁面(3)Response.Redirect(“~/test/1.aspx”);轉(zhuǎn)到當(dāng)前網(wǎng)站test目錄下的1.aspx頁面利用Response對象重新定向鏈接privatevoidButton1_Click(objectsender,System.EventArgse) {

if((TextBox1.Text!="")&& (TextBox1.Text.IndexOf("http://")>=0)) {

//如果目標網(wǎng)址不為空,并且包含“http://”字符,則跳轉(zhuǎn)

Response.Redirect(TextBox1.Text); } }Request對象Request對象的屬性和方法表單Form利用Request對象獲取客戶端表單信息利用Request對象獲取web服務(wù)器端信息利用Request對象獲取客戶端瀏覽器信息Request對象Request對象實際上操作System.Web命名空間中的HttpRequest類。當(dāng)客戶發(fā)出請求執(zhí)行ASP.Net程序時,客戶端的請求信息會包裝在Request對象中,這些請求信息包括請求報頭(Header)、客戶端的機器信息,客戶端瀏覽器信息,請求方法(如POST、GET)、提交的窗體信息等。Request對象的屬性和方法屬性AcceptTypes:客戶端支持的MIME接受類型的字符串?dāng)?shù)組。ApplicationPath:服務(wù)器上ASP.NET應(yīng)用程序的虛擬應(yīng)用程序根路徑。Browser:有關(guān)正在請求的客戶端的瀏覽器功能的信息。ClientCertificate:當(dāng)前請求的客戶端安全證書。ContentEncoding:或設(shè)置實體主體的字符集。ContentLength:指定客戶端發(fā)送的內(nèi)容長度(以字節(jié)計)。ContentType:傳入請求的MIME內(nèi)容類型。Cookies:客戶端發(fā)送的cookie的集合CurrentExecutionFilePath:當(dāng)前請求的虛擬路徑。FilePath:當(dāng)前請求的虛擬路徑。Form:窗體變量集合。Headers:HTTP頭集合IsAuthenticated:是否驗證了用戶。HttpMethod:客戶端使用的HTTP數(shù)據(jù)傳輸方法(如GET、POST或HEAD)。IsSecureConnection:HTTP連接是否使用安全套接字(即HTTPS)。Request對象的屬性和方法Path:當(dāng)前請求的虛擬路徑。PhysicalApplicationPath:當(dāng)前正在執(zhí)行的服務(wù)器應(yīng)用程序的根目錄的物理文件系統(tǒng)路徑。QueryString:HTTP查詢字符串變量集合。PhysicalPath:獲取與請求的URL相對應(yīng)的物理文件系統(tǒng)路徑。RawUrl:當(dāng)前請求的原始URL。RequestType:客戶端使用的HTTP數(shù)據(jù)傳輸方法(GET或POST)。ServerVariables:獲取Web服務(wù)器變量的集合。Url:有關(guān)當(dāng)前請求的URL的信息。UserAgent:客戶端瀏覽器的用戶代理信息UserHostAddress:客戶端的主機地址。UserHostName:客戶端的DNS名稱。UserLanguages:客戶端語言首選項的排序字符串?dāng)?shù)組。表單Form表單:所有的控件必須放在表單中。當(dāng)提交時,頁面會將form中的內(nèi)容作為一個整體提交給服務(wù)器。Aspx頁面中runat=server的表單只能有一個,并且不需要寫action,默認提交給自身。而html頁面需要寫action。Form具有g(shù)et和post提交方式。那么接收數(shù)據(jù)的方式也有所不同。通過Request對象可以獲得提交的客戶端表單的信息。根據(jù)用于提交信息方法的不同,Request對象可以分別使用QueryString和Form集合活動客戶端的表單信息Form的get和post提交方式1.get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器傳送數(shù)據(jù)。2.get是把參數(shù)數(shù)據(jù)隊列加到提交表單的ACTION屬性所指的URL中,值和表單內(nèi)各個字段一一對應(yīng),在URL中可以看到。post是通過HTTPpost機制,將表單內(nèi)各個字段與其內(nèi)容放置在HTMLHEADER內(nèi)一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。3.對于get方式,服務(wù)器端用Request.QueryString獲取變量的值,對于post方式,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。4.get傳送的數(shù)據(jù)量較小,不能大于2KB。post傳送的數(shù)據(jù)量較大,一般被默認為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。5.get安全性非常低,post安全性較高。但是執(zhí)行效率卻比Post方法好。利用Request對象獲取客戶端表單信息Request對象ServerVariables屬性Form

屬性Params屬性QueryString屬性獲取通過URL路徑傳來的數(shù)據(jù)(對應(yīng)于get)獲取通過表單提交傳輸?shù)臄?shù)據(jù)(對應(yīng)于post)獲取Web服務(wù)器變量的集合以上三種方式傳輸?shù)膬?nèi)容都可以使用該屬性獲取獲取其它頁面?zhèn)鬟f的參數(shù)例如:下面的超鏈接

http://localhost/test/1.aspx?Id=35247?后面是表示要傳入的參數(shù),這個參數(shù)名字叫Id,它的值是35247

如果要傳多個參數(shù),使用&連接

http://localhost/test/1.aspx?Id=35247&Name=huangbo以下的方法都可以用來獲取傳遞的參數(shù)(1)Request.QueryString[]:只能用來獲取采用在Url后面用?附帶的參數(shù),即只能取get方法的傳值例如取上面的值:Request.QueryString[“Id”];(2)Request.Form[]:獲取表單變量(form中的提交的內(nèi)容),但它不能用來獲取在Url中使用?傳遞的參數(shù),即只能取post方法的傳值

Request.Form[“Id”];

//Id是表單中某個輸入項的Name屬性(3)直接使用Request[]:例如:Request[“Id”]

這種方法可以取得無論是用get方式或post方式提交過來的數(shù)據(jù)。(4)Reqeust.Params[]:它是獲取QueryString、Form、ServerVarialbes和Cookies集合,慎用,如果設(shè)置得不好可能讀取出來會有多個值出現(xiàn)。

例如:Request.Params[“Id”]提交頁面

<FORMaction="result.aspx"method="post"><tablealign="center"><tr><tdstyle="width:65px">

用戶名:</td><tdcolspan="2"><inputid="txtName"type="text"name="txtName"/></td></tr><tr><tdstyle="width:65px">

密碼:</td><tdcolspan="2"><inputid="txtPwd"type="text"name="txtPwd"/></td></tr><tr><tdcolspan="3"><inputid="Submit1"type="Submit"name="Submit1"value="button"/></td></tr></table></FORM>Post,get,Response,Request例題接收頁面protectedvoidPage_Load(objectsender,EventArgse){//post.htm中From的method為post時,url中不顯示屬性值

//stringstrName=Request.Form["txtName"].ToString();//txtName為控件name屬性

//stringstrPwd=Request.Form["txtPwd"].ToString();//stringstrName=Request.Form.Get("txtName").ToString();//stringstrPwd=Request.Form.Get("txtPwd").ToString();//post.htm中From的method為get時,url中顯示屬性值

//stringstrName=Request.QueryString["txtName"].ToString();//stringstrPwd=Request.QueryString["txtPwd"].ToString();//post和get都可以

//stringstrName=Request["txtName"].ToString();//txtName為控件name屬性

//stringstrPwd=Request["txtPwd"].ToString();

stringstrName=Request.Params["txtName"].ToString();//txtName為控件name屬性stringstrPwd=Request.Params["txtPwd"].ToString();Response.Write("用戶名:"+strName+":密碼"+strPwd);Response.Write("你采用的是"+Request.RequestType+"方式提交");//if("a"==strName&&"a"==strPwd)//{////表單默認是get,可以將需要傳遞的值作為url中的參數(shù)進行傳遞。

//Response.Redirect("Default.aspx?strName1="+strName+"&strPwd1="+strPwd);//}//else//Response.Redirect("post.htm");}獲取服務(wù)器環(huán)境變量Response.Write("當(dāng)前網(wǎng)頁虛擬路徑是:"+Request.ServerVariables["url"]);Response.Write("<br>當(dāng)前網(wǎng)頁虛擬路徑是:"+Request.RawUrl);Response.Write("<br>實際路徑:"+Request.ServerVariables["path_translated"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論