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

下載本文檔

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

文檔簡(jiǎn)介

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

Trace.Warn(“abc”);

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

Trace.Write(“def”);

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

<system.web>

<traceenabled="true"pageOutput="true"/></system.web>Page對(duì)象Page對(duì)象Page對(duì)象Page_Init和Page_Load事件比較頁(yè)內(nèi)數(shù)據(jù)傳遞回發(fā)ASP.NETWeb頁(yè)面控件1控件1…用戶(hù)頁(yè)面操作Page.IsPostBack屬性回傳首次加載truefalse如何判斷回發(fā)和首次加載?IsPostBack屬性通過(guò)頁(yè)面的IsPostBack屬性,可以檢查.aspx頁(yè)是否為傳遞回服務(wù)器的頁(yè)面當(dāng)加載頁(yè)面并對(duì)控件的更改屬性進(jìn)行處理之前,用戶(hù)可以在Page_Load事件中檢查該頁(yè)面是否為被回傳的頁(yè)面Page對(duì)象的Init事件和Load事件都發(fā)生在頁(yè)面加載的過(guò)程中,但在Page對(duì)象的生存周期中Init事件,只有在頁(yè)面初始化時(shí)被觸發(fā)一次,而Load事件在初次加載及每次回發(fā)中都會(huì)被觸發(fā)。當(dāng)用戶(hù)單擊頁(yè)面中按鈕時(shí)引起回發(fā),使Load事件處理代碼再次被執(zhí)行如果希望初始化頁(yè)面時(shí)的事件處理代碼只在頁(yè)面首次加載時(shí)被執(zhí)行,則可將代碼放在Init事件中,或使用Page對(duì)象的IsPostBack屬性進(jìn)行判斷。Page_Init和Page_Load事件比較工序流程在服務(wù)器執(zhí)行1和2345aHTTP請(qǐng)求HTML頁(yè)回發(fā)之后的值進(jìn)行更改67HTML頁(yè)5b用戶(hù)進(jìn)行回發(fā)_VIEWSTATEKingK@******名稱(chēng)電子郵件密碼提交更改之前更改之后_VIEWSTATE控件是隱藏控件,在表單提交到服務(wù)器時(shí)此控件將被添加到表單中,用來(lái)保存控件的狀態(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頁(yè)面輸入輸出控制Request對(duì)象獲得頁(yè)面輸入U(xiǎn)RL傳參Form表單提交Response對(duì)象在頁(yè)面輸出要顯示的內(nèi)容重定向5.1Response對(duì)象Response對(duì)象的屬性和方法利用Response對(duì)象輸出文本文件利用Response對(duì)象重新定向鏈接Response對(duì)象的屬性和方法Response對(duì)象是HttpResponse類(lèi)的一個(gè)對(duì)象,與一個(gè)HTTP響應(yīng)相對(duì)應(yīng),通過(guò)該對(duì)象的屬性和方法可以控制如何將服務(wù)器端的數(shù)據(jù)發(fā)送到客戶(hù)端瀏覽器。Response對(duì)象的屬性和方法屬性:Buffer:表明頁(yè)輸出是否被緩沖。BufferOutput:是否緩沖輸出并在完成處理整個(gè)頁(yè)之后將其發(fā)送。Cache:獲取Web頁(yè)的緩存策略(過(guò)期時(shí)間、保密性、變化子句)。Charset:獲取或設(shè)置輸出流的HTTP字符集。ContentEncoding:獲取或設(shè)置內(nèi)容的編碼格式。ContentType: 獲取或設(shè)置輸出流的HTTPMIME類(lèi)型。Expires:獲取或設(shè)置在瀏覽器上緩存的頁(yè)過(guò)期之前的分鐘數(shù)。如果用戶(hù)在頁(yè)過(guò)期之前返回同一頁(yè),則顯示緩存的版本。提供Expires是為了與以前的ASP版本兼容。ExpiresAbsolute:獲取或設(shè)置將緩存信息從緩存中移除時(shí)的絕對(duì)日期和時(shí)間。提供ExpiresAbsolute是為了與以前的ASP版本兼容。Filter:獲取或設(shè)置一個(gè)包裝篩選器對(duì)象,該對(duì)象用于在傳輸之前過(guò)濾HTTP實(shí)體主體。IsClientConnected:指示客戶(hù)端是否仍連接在服務(wù)器上。Response對(duì)象的屬性和方法Output:返回輸出HTTP響應(yīng)流的文本輸出。OutputStream:返回輸出Http內(nèi)容主體的二進(jìn)制輸出流。Status:設(shè)置返回到客戶(hù)端的狀態(tài)欄。StatusCode:獲取或設(shè)置返回給客戶(hù)端的輸出的HTTP狀態(tài)代碼,通過(guò)HTTP狀態(tài)代碼客戶(hù)端可以知道服務(wù)器端的運(yùn)行情況。StatusDescription: 獲取或設(shè)置返回給客戶(hù)端的輸出的HTTP狀態(tài)字符串。SuppressContent:是否將HTTP內(nèi)容發(fā)送到客戶(hù)端。Response對(duì)象的屬性和方法方法:BinaryWrite:將一個(gè)二進(jìn)制字符串寫(xiě)入HTTP輸出流。Clear:清除緩沖區(qū)流中的所有內(nèi)容輸出。ClearContent:清除緩沖區(qū)流中的所有內(nèi)容。ClearHeaders:清除緩沖區(qū)流中的所有頭信息。Close:關(guān)閉到客戶(hù)端的套接字連接。End:將當(dāng)前所有緩沖的輸出發(fā)送到客戶(hù)端,停止該頁(yè)的執(zhí)行,并引發(fā)Application_EndRequest事件。Flush:向客戶(hù)端發(fā)送當(dāng)前所有緩沖的輸出。Flush方法和End方法都可以將緩沖的內(nèi)容發(fā)送到客戶(hù)端顯示,但是Flush與End的不同之處在于,F(xiàn)lush不停止頁(yè)面的執(zhí)行。Response對(duì)象Response對(duì)象允許開(kāi)發(fā)人員對(duì)當(dāng)前頁(yè)面的輸出流進(jìn)行操作Response.對(duì)象Redirect方法Write方法Response.Write("Hello,ACCP");直接在頁(yè)面上輸出內(nèi)容重定向到另外一個(gè)頁(yè)面Response.Redirect("");利用Response對(duì)象輸出文本文件privatevoidPage_Load(objectsender,System.EventArgse) { //在此處放置用戶(hù)代碼以初始化頁(yè)面 Response.ContentEncoding=

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

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

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

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

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

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

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

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

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

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

Request.Form[“Id”];

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

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

例如:Request.Params[“Id”]提交頁(yè)面

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

用戶(hù)名:</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例題接收頁(yè)面protectedvoidPage_Load(objectsender,EventArgse){//post.htm中From的method為post時(shí),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時(shí),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("用戶(hù)名:"+strName+":密碼"+strPwd);Response.Write("你采用的是"+Request.RequestType+"方式提交");//if("a"==strName&&"a"==strPwd)//{////表單默認(rèn)是get,可以將需要傳遞的值作為url中的參數(shù)進(jìn)行傳遞。

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論