版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第8章 高級(jí)應(yīng)用,8.1 高級(jí)控件 8.2 用戶控件 8.3 XML的應(yīng)用 8.4 應(yīng)用程序環(huán)境設(shè)置 8.5 Web Service簡(jiǎn)介 8.6使用ActiveX控件 8.7 本章小結(jié),8.1 高級(jí)控件,8.1.1 Calendar控件 Calendar控件的語法: 其中Options的位置用于設(shè)置日歷控件的各項(xiàng)屬性、事件。 Calendar控件的主要屬性和事件如下: lBackColor屬性:使用BackColor屬性指定Calendar控件的背景色。 lForeColor屬性:表示顯示的前景顏色。 lBorderColor屬性:用于設(shè)置Calendar控件的邊框顏色。 lBorderSty
2、le屬性:用于設(shè)置Calendar控件的邊框樣式 lCellPadding屬性:表示單元格的內(nèi)容和單元格的邊框之間的空間量(以像素為單位)。 lCellSpacing屬性:?jiǎn)卧耖g的間隔(以像素為單位)。 lDayNameFormat屬性:使用DayNameFormat屬性指定一周中各天的名稱格式。 lFirstDayOfWeek屬性:使用FirstDayOfWeek屬性指定要在Calendar控件的第一天列中 顯示的一周中的某天。 下面的示例展示如何使用FirstDayOfWeek屬性來將第一天列設(shè)置為星期一。 ,8.1 高級(jí)控件,Calendar Example lNextMonthTex
3、t屬性:該屬性用來設(shè)置下一月導(dǎo)航控件的標(biāo)題文本。默認(rèn)值是“。 lPrevMonthText屬性:使用PrevMonthText屬性為前一月導(dǎo)航控件提供自定義文本。 下例展示如何使用NextMonthText屬性為指向下一月和上一月的導(dǎo)航控件指定自定義文本。 Calendar Example l NextPrevFormat屬性:使用NextPrevFormat屬性來指定Calendar控件上下個(gè)月和上個(gè)月 導(dǎo)航元素的格式。它的各種取值表示Calendar上的下個(gè)月和上個(gè)月按鈕的不同樣式。 (1)CustomText:允許程序員為導(dǎo)航控件指定自定義文本。 (2)ShortMonth:顯示用三個(gè)字
4、母縮寫表示的月份名稱。 (3)FullMonth:顯示完整的月份名稱。,8.1 高級(jí)控件,l SelectionMode 屬性:使用SelectionMode屬性指定Calendar控件上的日期選擇模式。 SelectionMode屬性的各種取值及其說明 l SelectedDate屬性:使用SelectedDate屬性獲得或設(shè)置Calendar控件上的選定日期。 lSelectMonthText屬性:使用SelectMonthText屬性來為選擇器列中的月份選擇元素提供 自定義文本。 默認(rèn)值是“”,它呈現(xiàn)為兩個(gè)大于號(hào)()。 lSelectWeekText屬性:使用SelectWeekText
5、屬性為選擇器列中周選擇元素提供自定義文本。lShowGridLines屬性:該屬性指定是否用網(wǎng)格線分隔Calendar控件上的日期。 lShowNextPrevMonth屬性:該屬性指定Calendar控件是否在標(biāo)題部分顯示下個(gè)月和上個(gè) 月導(dǎo)航元素。 l ShowTitle屬性:使用ShowTitle屬性指定是否顯示標(biāo)題部分。 lTitleFormat屬性:使用TitleFormat屬性來指定標(biāo)題部分的格式。TitleFormat屬性的各種取值及其說明見表。,8.1 高級(jí)控件,TitleFormat屬性的各種取值及其說明 lTodaysDate 屬性:使用TodaysDate屬性來確定今天的日
6、期。 lTodayDayStyle屬性:使用此屬性來指定Calendar控件上今天日期的樣式。 lVisibleDate屬性:它指定要在Calendar控件上顯示的月份。 l OnSelectionChanged方法:引發(fā)Calendar控件的SelectionChanged事件,用戶可以為 SelectionChanged事件提供自定義處理程序。 lOnVisibleMonthChanged方法:引發(fā)Calendar控件的VisibleMonthChanged事件,用戶 可以為VisibleMonthChanged事件提供自定義處理程序。 【例8.1】使用Calendar控件實(shí)現(xiàn)以下功能:根
7、據(jù)用戶CheckBox控件的選擇來改變Calendar控 件控件的外觀。設(shè)計(jì)步驟如下: (1) 在VS.NET中創(chuàng)建項(xiàng)目WebExamp8_1。 (2) 設(shè)計(jì)項(xiàng)目主頁面WebForm1.aspx,包含5個(gè)Web服務(wù)器控件,分別是:1個(gè)Label 控件、1個(gè)Text控件和3個(gè)CheckBox控件。例子中所用控件的屬性設(shè)置見表8.6。,8.1 高級(jí)控件,控件的屬性設(shè)置 (3)在WebForm1.aspx界面的空白處雙擊,進(jìn)入程序編輯窗口,在Page_load()事件處理中輸 入以下程序代碼: Private Sub Page_Load(ByVal sender As System.Object,
8、ByVal e As System.EventArgs) Handles MyBase.Load message.Text = 今天的日期是 + Calendar1.TodaysDate End Sub 在CheckBox1_CheckedChanged ()事件處理中輸入以下程序代碼: Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles CheckBox1.CheckedChanged,8.1 高級(jí)控件,控制是否顯示前后月鏈接 Calen
9、dar1.ShowNextPrevMonth = Not Calendar1.ShowNextPrevMonth End Sub CheckBox2_CheckedChanged ()事件處理中輸入以下程序代碼: Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles CheckBox2.CheckedChanged 控制是否顯示表頭 Calendar1.ShowTitle = Not Calendar1.ShowTitle End Sub C
10、heckBox3_CheckedChanged ()事件處理中輸入以下程序代碼: Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles CheckBox3.CheckedChanged 控制是否顯示網(wǎng)格線 Calendar1.ShowGridLines = Not Calendar1.ShowGridLines End Sub Calendar1_SelectionChanged ()事件處理中輸入以下程序代碼: Private Sub Ca
11、lendar1_SelectionChanged(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Calendar1.SelectionChanged message.Visible = True message.Text = 您所選中的日期是 + Calendar1.SelectedDate End Sub,8.1 高級(jí)控件,(4)編譯、運(yùn)行程序。執(zhí)行結(jié)果如圖所示。 (a)程序運(yùn)行初始顯示 (b)不顯示前后月鏈接和表格線的顯示 (c)不顯示表頭和表格線的顯示 程序運(yùn)行結(jié)果,8.1 高級(jí)控件,8.1.2 Ad
12、Rotator控件 使用AdRotator控件,應(yīng)首先定義一個(gè)XML格式的文本文件,用于說明廣告的細(xì)節(jié)。 AdRotator控件的語法結(jié)構(gòu): AdRotator控件的主要屬性和事件如下: lAdvertisementFile屬性:AdRotator控件使用單獨(dú)的XML公布文件存儲(chǔ)公布信息。 XML文件包含的預(yù)定義屬性見下表。,8.1 高級(jí)控件,lKeywordFilter屬性:使用KeywordFilter屬性根據(jù)指定關(guān)鍵字篩選廣告公布。 l Target屬性:使用Target屬性來指定當(dāng)單擊AdRotator控件時(shí),顯示所鏈接到的Web頁 的內(nèi)容的目標(biāo)窗口或框架。 l OnAdCreated
13、方法:用于設(shè)置在界面上創(chuàng)建AdRotator控件時(shí)觸發(fā)事件的處理方法名稱。 【例8.2】使用AdRotator控件在“記事本”中創(chuàng)建一個(gè)定義兩則廣告的說明文件(ad.xml)。文件 內(nèi)容如下所示: c:image1.jpg MicrosoftMainSite 80 Topic1 c:image2.jpg WingTipToys 80 Topic2 ,8.1 高級(jí)控件,然后利用AdRotator控件創(chuàng)建廣告橫幅,顯示ad.xml文件中定義的廣告: 在Web頁中添加2個(gè)AdRotator控件(AdRotator1和AdRotator2),將它們的 AdvertisementFile屬性設(shè)置為ad.
14、xml,AdRotator1的KeyWordFilter屬性設(shè)置為Topic1,AdRotator1的KeyWordFilter屬性設(shè)置為Topic2。運(yùn)行結(jié)果如圖所示。 (a) 鼠標(biāo)移到AdRotator1時(shí)的顯示 (b) 鼠標(biāo)移到AdRotator2時(shí)的顯示 程序運(yùn)行結(jié)果 8.1.3 驗(yàn)證控件 在ASP.NET中,提供了6種驗(yàn)證控件自動(dòng)進(jìn)行數(shù)據(jù)的有效性驗(yàn)證,分別是: (1) CompareValidator控件 (2) RangeValidator控件 (3) RegularExpressionValidator控件 (4) ValidationSummary控件 (5) CustomVa
15、lidator控件 (6) RequiredFieldValidator控件,8.1 高級(jí)控件,1. 基本驗(yàn)證控件屬性 每種驗(yàn)證控件都有自己的屬性,下表列出了6種驗(yàn)證控件共有的幾個(gè)主要屬性。,8.1 高級(jí)控件,2. CompareValidator控件 比較驗(yàn)證控件的語法: 其中Options處用于對(duì)比較驗(yàn)證控件的各種屬性進(jìn)行設(shè)置。 CompareValidator控件的主要屬性: lValueToCompare屬性:用于設(shè)置要與用戶輸入到所驗(yàn)證的輸入控件中的值進(jìn)行比較的常數(shù)值 lControlToCompare屬性:使用ControlToCompare屬性來指定要與所驗(yàn)證的輸入控件進(jìn)行比較的
16、輸入控件,如TextBox。 lOperator屬性:使用Operator屬性指定要執(zhí)行的比較操作。 下表列出了可能的比較操作。,8.1 高級(jí)控件,3. RangeValidator控件 范圍驗(yàn)證控件的語法: 其中Options處用于對(duì)范圍驗(yàn)證控件的各種屬性進(jìn)行設(shè)置。 RangeValidator控件的主要屬性包括: l MinimumValue屬性和MaximumValue屬性:分別指定有效范圍的最小值和最大值。 l Type屬性:用于指定要比較的值的數(shù)據(jù)類型。 4. RequiredFieldValidator控件 必須字段驗(yàn)證控件的語法: 其中Options用于對(duì)必須字段驗(yàn)證控件的各種屬
17、性進(jìn)行設(shè)置。 5. RegularExpressionValidator控件 正則表達(dá)式驗(yàn)證控件的語法: 其中Options用于對(duì)正則表達(dá)式驗(yàn)證控件的各種屬性進(jìn)行設(shè)置。 6. CustomValidator控件 自定義證控件的語法: ,8.1 高級(jí)控件,其中Options用于對(duì)自定義驗(yàn)證控件的各種屬性進(jìn)行設(shè)置。 7. ValidationSummary控件 驗(yàn)證總結(jié)驗(yàn)證控件的語法: 其中Options用于對(duì)驗(yàn)證總結(jié)驗(yàn)證控件的各種屬性進(jìn)行設(shè)置。 ValidationSummary控件的主要屬性如下: lDisplayMode屬性:使用該屬性指定ValidationSummary控件的顯示格。 l
18、HeaderText屬性:用于設(shè)置顯示錯(cuò)誤信息列表的表頭。 l ShowSummary屬性:用于設(shè)置是否內(nèi)聯(lián)顯示驗(yàn)證摘要。 【例8.3】使用驗(yàn)證控件設(shè)計(jì)登錄界面,利用驗(yàn)證控件來實(shí)現(xiàn)對(duì)輸入內(nèi)容進(jìn)行自動(dòng)驗(yàn)證。 要求:用戶名必須輸入,口令和確認(rèn)口令必須一致,年齡必須在1860歲之間, Email地址格式必須符合Email地址的寫法規(guī)則,否則顯示驗(yàn)證錯(cuò)誤信息。 (1) 在VS.NET中創(chuàng)建項(xiàng)目WebExamp8_3。 (2) 設(shè)計(jì)項(xiàng)目主頁面WebForm1.aspx,包含17個(gè)控件,分別是:6個(gè)Label控件、5個(gè)驗(yàn)證 控件、5個(gè)TextBox控件和1個(gè)Button控件。 其中6個(gè)標(biāo)簽,用于顯示提示信
19、息,標(biāo)簽文本分別為:驗(yàn)證控件示例、用戶名: 、口令:、確認(rèn)口令:、年齡:、email地址:。 (3)編譯、運(yùn)行程序。在各文本框中輸入不同內(nèi)容,顯示不同運(yùn)行結(jié)果,具體見圖。,8.1 高級(jí)控件,(a)不輸入用戶名、口令和確認(rèn)口令不符 (b)年齡不在1860之間、ema il格式不對(duì) 程序運(yùn)行結(jié)果,8.2 用戶控件,8.2.1 將Web窗體頁轉(zhuǎn)換為用戶控件 將Web窗體頁轉(zhuǎn)換為用戶控件的步驟是: (1) 創(chuàng)建一個(gè)基本的Web窗體頁; (2) 對(duì)代碼進(jìn)行少量更改,主要修改包括: l 將代碼隱藏基類從Page更改為UserControl l 從.aspx文件中刪除、和標(biāo)記 l 將ASP.NET指令類型從
20、Page更改為Control l 更改Codebehind屬性來引用控件的代碼隱藏類文件ascx.vb l 將.aspx文件擴(kuò)展名更改為.ascx (3) 測(cè)試控件,方法是:創(chuàng)建一個(gè)新的Web窗體頁,向其添加該控件,然后在瀏覽器中打開該頁。 【例8.4】創(chuàng)建一個(gè)基本的Web窗體頁,該頁向用戶顯示一個(gè)個(gè)性化的歡迎信息,將該 Web窗體頁轉(zhuǎn)化為Web用戶控件。 (1) 在VS.NET中創(chuàng)建項(xiàng)目WebExamp8_4。 (2) 添加Web窗體頁(welcome.aspx),各控件的主要屬性設(shè)置見表。 將下面的代碼添加到Button1_Click過程: Label2.Text = Hi Data So
21、urce = &Server.MapPath(xs.MDB) MyCommand = New OleDbDataAdapter(Select * from xs,String1) 取出xs表中的所有數(shù)據(jù) MyDataSet=New DataSet() MyCommand.Fill(MyDataSet,“xs”) 將所有數(shù)據(jù)放在MyDataSet中 MyDataSet.WriteXml(“c:student.xml”) 調(diào)用WriteXml方法將MyDataSet中的 數(shù)據(jù)寫入C:盤的student.xml文件中 MyDataGrid.DataSource = MyDataSet MyDataG
22、rid.DataMember = xs“ MyDataGrid.DataBind() End Sub,8.3 XML的應(yīng)用,(2) XS數(shù)據(jù)庫中xs表中的數(shù)據(jù)如圖所示。 xs表中的數(shù)據(jù) (3)執(zhí)行程序,在C盤根目錄下創(chuàng)建了 文件student.xml,在記事本中打開, 文件內(nèi)容顯示如下: 張三 0001 女 南京 李四 0002 男 河北 王濤 0003男 上海,8.3 XML的應(yīng)用, 張影 0004 女 河南 2. 用DataSet的ReadXML方法讀出XML文檔中的數(shù)據(jù) 使用DataSet的ReadXML方法,只要指明要讀取的XML文檔的路徑和文件名,就可以很 方便地讀出XML文檔中的所
23、有數(shù)據(jù)。例如: Dim MyDataSet As DataSet MyDataSet.ReadXml(server.mappath(student.xml) MyDataGrid.DataSource = MyDataSet.tables(0).DefaultVie MyDataGrid.DataBind() 上述程序段,實(shí)現(xiàn)了將當(dāng)前路徑下的student.xml文檔內(nèi)容通過DataSet的ReadXML方法讀出,并將讀出數(shù)據(jù)在DataGrid控件中顯示的功能。,8.4 應(yīng)用程序環(huán)境設(shè)置,8.4.1 了解ASP.NET配置 1. Machine.config文件和Web.config 文件 A
24、SP.NET的所有配置文件都是XML格式的文件。Machine.config 包含這臺(tái)服務(wù)器上 所有ASP.NET應(yīng)用程序的默認(rèn)設(shè)置,包含整個(gè)計(jì)算機(jī)范圍內(nèi)的程序集綁定、內(nèi)置遠(yuǎn)程處理 信道等的配置設(shè)置。在一個(gè)系統(tǒng)中,只能有一個(gè)Machine.config文件,而可以有多個(gè) web.config文件。Machine.config文件和Web.config 文件在語法上沒有任何區(qū)別。 2. 配置文件中常用的標(biāo)記 每個(gè)配置文件都包含XML標(biāo)記和子標(biāo)記的嵌套層次結(jié)構(gòu),這些標(biāo)記帶有指定配置設(shè) 置的屬性。注意:XML標(biāo)記和屬性是區(qū)分大小寫的。 一般,配置文件的XML語法格式如下所示: ,8.4 應(yīng)用程序環(huán)境
25、設(shè)置,和標(biāo)記間的配置信息可分為下列三種不同類型的元素: l配置節(jié)處理程序聲明 配置節(jié)處理程序聲明位于配置文件頂部和標(biāo)記之間。 l配置節(jié)組 節(jié)標(biāo)記可以使用節(jié)組標(biāo)記來進(jìn)一步限定,以便節(jié)劃分成邏輯組。 l配置節(jié)設(shè)置區(qū)域 配置節(jié)設(shè)置區(qū)域包含實(shí)際的配置設(shè)置。 注意:是否使用配置節(jié)組完全由用戶決定,并不一定要使用節(jié)組標(biāo)記來劃分節(jié)標(biāo)記。 其他常用的元素標(biāo)記及其功能見下表,8.4 應(yīng)用程序環(huán)境設(shè)置,下面的Web.config文件示例聲明兩個(gè)配置處理程序,一個(gè)是管理應(yīng)用程序設(shè)置, 另一個(gè)是管理會(huì)話狀態(tài)。 ,8.4 應(yīng)用程序環(huán)境設(shè)置,8.4.2 使用緩存 ASP.NET提供了強(qiáng)有力的緩存架構(gòu)。除此之外,ASP.N
26、ET還提供了下列緩存: l 輸出緩存 l 碎片緩存 l 數(shù)據(jù)緩存 1. 輸出緩存 為了以更高的效率顯示動(dòng)態(tài)生成的頁面,ASP.NET提供了輸出緩存。 2. 碎片緩存 如果很多頁面中都有相同的部分,ASP.NET可以緩存頁面的這個(gè)部分,而不需緩存整 個(gè)頁面,這就是碎片緩存。 OutputCache的語法: OutputCache的屬性如下: (1)Duration屬性(2)Location屬性(3)VaryByCustom屬性 (4)VaryByHeader屬性 (5)VaryByParam屬性 (6)VaryByControl屬性,8.4 應(yīng)用程序環(huán)境設(shè)置,3. 數(shù)據(jù)緩存 數(shù)據(jù)緩存是用來保存信
27、息的緩存。使用ASP.NET緩存則可以實(shí)現(xiàn)全局的數(shù)據(jù)傳送。另 外與Application相比,使用緩存可以實(shí)現(xiàn)自動(dòng)的鎖定 ASP.NET緩存的使用方法與Application和Session對(duì)象非常類似。例如,要在緩存中增 加一個(gè)數(shù)據(jù)項(xiàng)可以使用下面的語句: Cache(name)=Tony 或者 Cache.insert(name,Tony) 這樣,在ASP.NET緩存中就增加了一個(gè)名字為name的數(shù)據(jù),它的值是Tony。若要在 其他的頁面中訪問它,可以通過Cache(name)得到。 為了避免出現(xiàn)緩存不足的現(xiàn)象,應(yīng)及時(shí)清理緩存中保存的不再有用的數(shù)據(jù),具體刪 除的方法是: cache.remo
28、ve(name),8.5 Web Service簡(jiǎn)介,8.5.1 了解Web服務(wù) Web服務(wù)是具有各種程序功能的眾多單元,通過標(biāo)準(zhǔn)化的通信協(xié)議(HTTP)及數(shù)據(jù) 格式(XML)公開給客戶端。 可以把Web服務(wù)理解成應(yīng)用程序當(dāng)中所使用的完成特定任務(wù)的一個(gè)函數(shù)。 與組件類似,Web服務(wù)表示可以重復(fù)使用的黑匣功能,而無需關(guān)心服務(wù)實(shí)現(xiàn)的方式。 l使用XML構(gòu)架:Web服務(wù)使用XML作為表示數(shù)據(jù)的標(biāo)準(zhǔn)方法。 lSOAP協(xié)議:簡(jiǎn)單對(duì)象訪問協(xié)議(SOAP)是一個(gè)用來在分散/分布式的環(huán)境中交換 信息的簡(jiǎn)單協(xié)議,它是一個(gè)基于XML的協(xié)議。 l服務(wù)描述語言-WSDL lUDDI:規(guī)范定義了一個(gè)發(fā)布和發(fā)現(xiàn)有關(guān)Web
29、服務(wù)信息的標(biāo)準(zhǔn)方法。 8.5.2 創(chuàng)建Web服務(wù) 1. 聲明Web服務(wù) 聲明Web服務(wù)的語法: 2. 創(chuàng)建Web服務(wù)類 每個(gè).asmx文件都與一個(gè)單獨(dú)的類相關(guān)聯(lián),Web服務(wù)類定義的語法如下所示: Imports System.Web.Services,8.5 Web Service簡(jiǎn)介, _Public Class ClassNam Inherits System.Web.Services.WebService Web服務(wù)公開的方法 End Class 說明: l Imports System.Web.Services:用Imports語句以導(dǎo)入System.Web.Services命名空間。
30、 l 屬性指定XML命名空間:基于XML命名空間的Web服務(wù)使用XML命 名空間對(duì)它們進(jìn)行唯一標(biāo)識(shí) 。 l 用屬性公開方法:聲明了實(shí)現(xiàn)Web服務(wù)的后,需要添加一個(gè)或多個(gè)為 Web服務(wù)提供各種功能的方法。 將屬性添加到ASP.NET方法中的語法為: _ Public Function MethodName() As ReturnType 方法代碼 End Function下面以一個(gè)實(shí)例介紹如何創(chuàng)建ASP.NET Web服務(wù)。 【例8.8】創(chuàng)建一個(gè)可運(yùn)行的Web服務(wù)。此服務(wù)中有一個(gè)方法,方法的功能就是返回字符串“Hello ,World!”。創(chuàng)建ASP.NET Web服務(wù)項(xiàng)目的步驟: (1) 在“
31、文件”菜單上指向“新建”,然后單擊“項(xiàng)目”。 (2) 在“新建項(xiàng)目”對(duì)話框中,選擇“Visual Basic 項(xiàng)目”單擊“ASP.NET Web服務(wù)”圖標(biāo)。,8.5 Web Service簡(jiǎn)介,(3) 輸入要在其中開發(fā) XML Web services 的Web服務(wù)器地址,默認(rèn)情況下,項(xiàng)目使用本地 計(jì)算機(jī),即http:/localhost,并將helloservice1指定為目錄名。如圖所示。 創(chuàng)建ASP.NET Web服務(wù)在代碼編輯器中查看后臺(tái)代碼 (4) 單擊“確定”創(chuàng)建項(xiàng)目。 (5) 選擇“視圖”“代碼”選項(xiàng),VS.NET將顯示程序的源代碼。如圖8.12所示。 (6) 添加一個(gè)名為Hel
32、loWorld的方法的方法定義,返回類型為String,返回的字符串 為“Hello World!” _ Public Function HelloWorld() As String return Hello World! End Function,8.5 Web Service簡(jiǎn)介,(7) 保存文件。 (8) 輸入Service1.asmx文件的URL地址,在瀏覽器中瀏覽該Web服務(wù)。該Web服務(wù)的初始 請(qǐng)求的輸出結(jié)果見圖。 Web服務(wù)的初始請(qǐng)求的輸出 WSDL協(xié)定的部分內(nèi)容 (9) 單擊圖中的“服務(wù)說明”鏈接,ASP.NET會(huì)返回描述該Web服務(wù)的WSDL協(xié)定,顯示 的部分內(nèi)容見圖。 (1
33、0) 單擊圖中的“HelloWorld”操作的鏈接。部分顯示結(jié)果見圖。 (11) 單擊圖中的“調(diào)用“按鈕,會(huì)在一個(gè)新的瀏覽器窗口中顯示調(diào)用該方法返回的XML 結(jié)果。輸出結(jié)果見圖8.16。 以上就是通過在.asmx文件中定義Web服務(wù)類來實(shí)現(xiàn)Web服務(wù)的過程。,8.5 Web Service簡(jiǎn)介,請(qǐng)求與響應(yīng)的語法 調(diào)用返回的XML結(jié)果 8.5.3 公布Web服務(wù) 公布Web服務(wù)有兩種解決方案:用發(fā)現(xiàn)文檔公布Web服務(wù)和通過UDDI公布Web服務(wù)。 1. 用發(fā)現(xiàn)文檔公布Web服務(wù) 發(fā)現(xiàn)文檔是一個(gè)基于XML的文檔,包含對(duì)Web服務(wù)和其他發(fā)現(xiàn)文檔的引用。發(fā)現(xiàn)文件的 擴(kuò)展名為.disco,在ASP.NE
34、T中創(chuàng)建Web服務(wù)時(shí)自動(dòng)生成該文件。 2. 通過UDDI公布Web服務(wù) 可以通過使用UDDI的方法公布Web服務(wù)。這種方法是由Ariba、IBM和Microsoft等多家 廠商共同發(fā)起的,專門用于提供一個(gè)基于Internet的業(yè)務(wù)注冊(cè)表。,8.5 Web Service簡(jiǎn)介,8.5.4 使用Web服務(wù) 在Visual Studio.NET中創(chuàng)建XML Web服務(wù)客戶程序可以通過需要以下步驟: l 使用模板創(chuàng)建客戶程序項(xiàng)目。 l 使用Visual Studio.NET提供的工具創(chuàng)建訪問XML Web服務(wù)的代理類并把它添加到客戶程序項(xiàng)目中。 l 在客戶程序的代碼中創(chuàng)建代理類實(shí)例并通過它來調(diào)用XML
35、 Web服務(wù)的方法。 【例8.9】創(chuàng)建一使用例8.8中所建helloservice1 Web服務(wù)的客戶程序。創(chuàng)建步驟: (1) 在Visual Studio.NET中,選擇“文件”“新建”“項(xiàng)目”。顯示新建項(xiàng)目對(duì)話框。 (2)在新建項(xiàng)目對(duì)話框中,單擊Visual Basic Project,在模板中點(diǎn)擊ASP.NET Web 應(yīng)用程序。 (3) 將1個(gè)Button控件和1個(gè)TextBox控件拖放到網(wǎng)頁上 ,設(shè)置Button控件的Text屬 性為call helloservices。 (4) 選擇“項(xiàng)目”“添加Web引用”選項(xiàng),Visual Studio.NET將會(huì)顯示如圖8.17所示 的“添加
36、Web引用”對(duì)話框。 (5) 在圖中的地址字段中,輸入helloservice1 Web服務(wù)的WSDL文件的URL。 輸入localhost/ helloservice1/service1.asmx?WSDL并按回車鍵。在對(duì)話框中將加載文件的內(nèi)容,如圖所示。點(diǎn)擊“添加引用”按鈕。,8.5 Web Service簡(jiǎn)介,“添加Web引用”對(duì)話框 在對(duì)話框中將加載WSDL文件的內(nèi)容 程序的運(yùn)行結(jié)果,8.5 Web Service簡(jiǎn)介,(6) 在Button1_Click事件中編寫如下代碼: Private Sub Button1_Click(ByVal sender As System.Object
37、, ByVal e As System.EventArgs) Handles Button1.Click Dim Webserviceobject As New localhost.Service1() 創(chuàng)建localhost.Service1()的實(shí)例 Webserviceobject Try TextBox1.Text = Webserviceobject.HelloWorld() 調(diào)用Service1的HelloWorld方法 Catch ex As Exception 發(fā)現(xiàn)異常在TextBox1中顯示異常信息 TextBox1.Text = Exception in Web servi
38、ce: & ex.Message End Try End Sub (7) 編譯、運(yùn)行程序。單擊“call helloservices”按鈕,則調(diào)用調(diào)用Service1的HelloWorld方法, 在TextBox中顯示“Hello World!”,如圖所示。 【例8.10】綜合實(shí)例。程序功能:完成公司招聘信息的發(fā)布和各公司招聘信息的瀏覽。發(fā)布的 招聘信息存儲(chǔ)到C:盤的data.xml文件中,瀏覽各公司的招聘信息是將data.xml文件 中的數(shù)據(jù)讀出來,顯示在DataGrid中。 1) 在VS.NET中創(chuàng)建項(xiàng)目WebExamp8_10。 2) 創(chuàng)建項(xiàng)目中的窗體頁:本例設(shè)計(jì)了4個(gè)窗體頁、1個(gè)用戶控
39、件和1個(gè)Web服務(wù)程序。 4個(gè)窗體頁分別是:,8.5 Web Service簡(jiǎn)介,(1)login.aspx:登錄界面(2)welcome.aspx:歡迎進(jìn)入系統(tǒng)界面 (3)zhaopin.aspx:某公司招聘信息發(fā)布頁面(4)browse.aspx:瀏覽各公司招聘信息頁面 1個(gè)用戶控件: navigator.ascx:該用戶控件包括welcome.aspx、zhaopin.aspx和browse.aspx窗體頁都包含的標(biāo) 題和導(dǎo)航條。 1個(gè)Web服務(wù)程序:該Web服務(wù)完成將公司發(fā)布的招聘信息寫入data.xml文件。 (1) Web服務(wù)的設(shè)計(jì) 在“文件”菜單上指向“新建”,然后單擊“項(xiàng)目”。
40、 l在“新建項(xiàng)目”對(duì)話框中,選擇“Visual Basic 項(xiàng)目”單擊“ASP.NET Web 服務(wù)”圖標(biāo)。 l輸入要在其中開發(fā)XML Web services的Web服務(wù)器地址,默認(rèn)情況下,項(xiàng)目使用本地 計(jì)算機(jī),即http:/localhost,并將writefile指定為目錄名。 l單擊“確定”創(chuàng)建項(xiàng)目。 l選擇“視圖”菜單的“代碼”,輸入如下所示的程序: Imports System Imports System.IO Imports System.Data Imports System.Data.OleDb Imports System.IO.FileStream Imports Sy
41、stem.Web.Services,8.5 Web Service簡(jiǎn)介, Public Function writexmldata(ByVal company As String, ByVal skills As String, ByVal education As String, ByVal experience As String, ByVal salary As String) As Boolean Dim mydataset As New DataSet() Dim filePath As String Dim newrow As DataRow Dim fin As FileStre
42、am Dim fout As FileStream 定義輸入流文件變量fin,內(nèi)容為c:data.xml文件內(nèi)容。 fin = New FileStream(c:data.xml, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) mydataset.ReadXml(fin) 將流文件 fin內(nèi)容讀入數(shù)據(jù)集mydataset fin.Close() newrow = mydataset.Tables(0).NewRow newrow(公司名稱) = company newrow(技術(shù)要求) = skills newrow(學(xué)歷要求) =
43、education newrow(工作經(jīng)驗(yàn)) = experience newrow(工資待遇) = salary mydataset.Tables(0).Rows.Add(newrow) 在mydataset加入1行 fout = New FileStream(c:data.xml, FileMode.Open, FileAccess.Write, FileShare.ReadWrite) mydataset.WriteXml(fout) 將增加1行后的數(shù)據(jù)重新寫入c:data.xml,8.5 Web Service簡(jiǎn)介,fout.Close() Return True End Functi
44、on (2) 用戶控件的設(shè)計(jì) l 新建項(xiàng)目。 l 在“項(xiàng)目”菜單中選取“加入Web用戶控件”命令。彈出“添加新項(xiàng)”對(duì)話框。 l 在“添加新項(xiàng)”對(duì)話框中的模板中選中“Web用戶控件”,在“名稱”文本框中輸入 navigator.ascx,然后按下“打開”按鈕。 l 在設(shè)計(jì)器中,設(shè)計(jì)用戶控件。 窗體頁中包含4個(gè)Web服務(wù)器控件,分別是:1個(gè)Image控件和3個(gè)HyperLink控件, 界面如圖所示。窗體頁中各控件的屬性見表。 各控件的屬性設(shè)置,8.5 Web Service簡(jiǎn)介,用戶控件界面 (3) 窗體頁設(shè)計(jì) 選擇“項(xiàng)目”菜單中的“添加Web窗體”,在“添加新項(xiàng)”對(duì)話框的名稱中輸入login.a
45、spx,單擊“打開”按鈕,拖動(dòng)控件到窗體進(jìn)行設(shè)計(jì)。用同樣的方法加入welcome.aspx、zhaopin.aspx 和browse.aspx窗體。 login.aspx窗體界面如圖所示,其中用到的控件及其屬性設(shè)置見下表。,8.5 Web Service簡(jiǎn)介,登錄界面設(shè)計(jì) 雙擊entry按鈕,在entry _Click ()事件處理中輸入以下程序代碼: Private Sub entry_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles entry.Click If (name.Text = aa
46、a And password.Text = 123456) Then Response.Redirect(welcome.aspx) Else message.Text = 用戶名或密碼錯(cuò)誤,請(qǐng)重新輸入。 name.Text = password.Text = End If End Sub,8.5 Web Service簡(jiǎn)介,雙擊cancel按鈕,在cancel _Click ()事件處理中輸入以下程序代碼: Private Sub cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
47、cancel.Click name.Text = password.Text = End Sub l welcome.aspx窗體設(shè)計(jì) 從解決方案中將navigator.ascx用戶控件拖動(dòng)到窗體中。再向窗體中加入1個(gè)label控件,該控件的text屬性設(shè)置為“歡迎使用招聘信息管理系統(tǒng)”。welcome.aspx窗體界面如下圖所示。 l zhaopin.aspx窗體設(shè)計(jì) 從解決方案中將navigator.ascx用戶控件拖動(dòng)到窗體中。 zhaopin.aspx窗體界面如右圖所示,其中用到的控件及 其屬性設(shè)置見表8.18。,8.5 Web Service簡(jiǎn)介,Button1_Click ()事件
48、處理中輸入以下程序代碼: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Button1.Click Dim ws As New localhost.Service1() If ws.writexmldata(gsmc.Text, jsyq.Text, xlyq.Text, jsyq.Text, gzdy.Text) Then message.Text = 招聘信息已成功發(fā)布 End If End Sub l browse.aspx窗體設(shè)計(jì) 從解決方案中將navigator.ascx用戶控件拖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 信用分析師崗前規(guī)章制度考核試卷含答案
- 科研助理安全檢查能力考核試卷含答案
- 釬焊工持續(xù)改進(jìn)考核試卷含答案
- 耐火材料成型操作工安全應(yīng)急能力考核試卷含答案
- 肉品分級(jí)員班組評(píng)比模擬考核試卷含答案
- 絕緣成型件制造工安全素養(yǎng)模擬考核試卷含答案
- 紡織染色機(jī)操作工安全知識(shí)競(jìng)賽測(cè)試考核試卷含答案
- 鉆孔機(jī)司機(jī)標(biāo)準(zhǔn)化考核試卷含答案
- 水聲換能器制造工安全管理水平考核試卷含答案
- 水工監(jiān)測(cè)工保密意識(shí)強(qiáng)化考核試卷含答案
- 種植業(yè)合作社賬務(wù)處理
- 【麗江玉龍旅游薪酬制度的創(chuàng)新研究6100字】
- 公司兩權(quán)分離管理制度
- 車輛叉車日常檢查記錄表
- 廣東高校畢業(yè)生“三支一扶”計(jì)劃招募考試真題2024
- 膠帶機(jī)硫化工藝.課件
- 種雞免疫工作總結(jié)
- 河南省商丘市柘城縣2024-2025學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試題(含答案)
- 河南省信陽市2024-2025學(xué)年高二上學(xué)期1月期末英語試題(含答案無聽力原文及音頻)
- 給女朋友申請(qǐng)書
- 八下《桃花源記》《小石潭記》全文背誦(原文+譯文)
評(píng)論
0/150
提交評(píng)論