第8章 高级应用_第1页
第8章 高级应用_第2页
第8章 高级应用_第3页
第8章 高级应用_第4页
第8章 高级应用_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章

高级应用

8.1 高级控件 8.2 用户控件 8.3 XML的应用 8.4 应用程序环境设置 8.5 WebService简介 8.6 使用ActiveX控件 8.7 本章小结8.1 高级控件8.1.1Calendar控件

Calendar控件的语法: <ASP:CalendarOptions/>

其中Options的位置用于设置日历控件的各项属性、事件。

Calendar控件的主要属性和事件如下:

l

BackColor属性: 使用BackColor属性指定Calendar控件的背景色。

l

ForeColor属性: 表示显示的前景颜色。

l

BorderColor属性: 用于设置Calendar控件的边框颜色。

l

BorderStyle属性: 用于设置Calendar控件的边框样式

l

CellPadding属性: 表示单元格的内容和单元格的边框之间的空间量(以像素为单位)。

l

CellSpacing属性: 单元格间的间隔(以像素为单位)。

l

DayNameFormat属性:使用DayNameFormat属性指定一周中各天的名称格式。

l

FirstDayOfWeek属性:使用FirstDayOfWeek属性指定要在Calendar控件的第一天列中 显示的一周中的某天。

下面的示例展示如何使用FirstDayOfWeek属性来将第一天列设置为星期一。 <%@PageLanguage="VB"%> <HTML><BODY> <FORMrunat="server">8.1 高级控件 <H3>CalendarExample</H3> <ASP:Calendarid="calendar1"Runat="server" FirstDayOfWeek="Monday"/> </FORM> </BODY></HTML> l

NextMonthText属性:该属性用来设置下一月导航控件的标题文本。默认值是">“。 l

PrevMonthText属性:使用PrevMonthText属性为前一月导航控件提供自定义文本。 下例展示如何使用NextMonthText属性为指向下一月和上一月的导航控件指定自定义文本。 <%@PageLanguage="VB"%> <HTML><BODY> <FORMrunat="server"> <H3>CalendarExample</H3> <ASP:Calendarid="calendar1"Runat="server" NextMonthText="Next" PrevMonthText="Prev"/> </FORM> </BODY></HTML> l NextPrevFormat属性:使用NextPrevFormat属性来指定Calendar控件上下个月和上个月 导航元素的格式。它的各种取值表示Calendar上的下个月和上个月按钮的不同样式。

(1) CustomText:允许程序员为导航控件指定自定义文本。 (2) ShortMonth:显示用三个字母缩写表示的月份名称。 (3) FullMonth:显示完整的月份名称。8.1 高级控件

l SelectionMode属性:使用SelectionMode属性指定Calendar控件上的日期选择模式。

SelectionMode属性的各种取值及其说明

l

SelectedDate属性:使用SelectedDate属性获得或设置Calendar控件上的选定日期。

l

SelectMonthText属性:使用SelectMonthText属性来为选择器列中的月份选择元素提供 自定义文本

默认值是“>>”,它呈现为两个大于号(>>)。

l

SelectWeekText属性:使用SelectWeekText属性为选择器列中周选择元素提供自定义文本。l

ShowGridLines属性:该属性指定是否用网格线分隔Calendar控件上的日期。

l

ShowNextPrevMonth属性:该属性指定Calendar控件是否在标题部分显示下个月和上个 月导航元素。

l

ShowTitle属性:使用ShowTitle属性指定是否显示标题部分。

l

TitleFormat属性:使用TitleFormat属性来指定标题部分的格式。TitleFormat属性的各种取值 及其说明见表。8.1 高级控件TitleFormat属性的各种取值及其说明

l

TodaysDate属性:使用TodaysDate属性来确定今天的日期。

l

TodayDayStyle属性:使用此属性来指定Calendar控件上今天日期的样式。

l

VisibleDate属性:它指定要在Calendar控件上显示的月份。

l

OnSelectionChanged方法:引发Calendar控件的SelectionChanged事件,用户可以为 SelectionChanged事件提供自定义处理程序。

l

OnVisibleMonthChanged方法:引发Calendar控件的VisibleMonthChanged事件,用户 可以为VisibleMonthChanged事件提供自定义处理程序。 【例8.1】使用Calendar控件实现以下功能:根据用户CheckBox控件的选择来改变Calendar控 件控件的外观。设计步骤如下:

(1) 在VS.NET中创建项目WebExamp8_1。

(2) 设计项目主页面WebForm1.aspx,包含5个Web服务器控件,分别是:1个Label

控件、1个Text控件和3个CheckBox控件。例子中所用控件的属性设置见表8.6。

8.1 高级控件控件的属性设置 (3) 在WebForm1.aspx界面的空白处双击,进入程序编辑窗口,在Page_load()事件处理中输 入以下程序代码:

PrivateSubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles MyBase.Load message.Text="今天的日期是"+Calendar1.TodaysDate EndSub

在CheckBox1_CheckedChanged()事件处理中输入以下程序代码:

PrivateSubCheckBox1_CheckedChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesCheckBox1.CheckedChanged8.1 高级控件

'控制是否显示前后月链接

Calendar1.ShowNextPrevMonth=NotCalendar1.ShowNextPrevMonth EndSub

CheckBox2_CheckedChanged()事件处理中输入以下程序代码:

PrivateSubCheckBox2_CheckedChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesCheckBox2.CheckedChanged

'控制是否显示表头

Calendar1.ShowTitle=NotCalendar1.ShowTitle EndSub

CheckBox3_CheckedChanged()事件处理中输入以下程序代码:

PrivateSubCheckBox3_CheckedChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesCheckBox3.CheckedChanged

'控制是否显示网格线

Calendar1.ShowGridLines=NotCalendar1.ShowGridLines EndSub

Calendar1_SelectionChanged()事件处理中输入以下程序代码:

PrivateSubCalendar1_SelectionChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesCalendar1.SelectionChanged message.Visible=True message.Text="您所选中的日期是"+Calendar1.SelectedDate EndSub8.1 高级控件 (4)编译、运行程序。执行结果如图所示。 (a)程序运行初始显示

(b)不显示前后月链接和表格线的显示(c)不显示表头和表格线的显示

程序运行结果8.1 高级控件8.1.2AdRotator控件

使用AdRotator控件,应首先定义一个XML格式的文本文件,用于说明广告的细节。

AdRotator控件的语法结构:

<ASP:AdRotator

Id="Value"

AdvertisementFile="AdvertisementFile"

KeyWordFilter="KeyWord"

Target="Target"

OnAdCreated="OnAdCreatedMethod"

Runat="server"/> AdRotator控件的主要属性和事件如下:

l

AdvertisementFile属性:AdRotator控件使用单独的XML公布文件存储公布信息。

XML文件包含的预定义属性见下表。

8.1 高级控件

l

KeywordFilter属性:使用KeywordFilter属性根据指定关键字筛选广告公布。

l

Target属性:使用Target属性来指定当单击AdRotator控件时,显示所链接到的Web页 的内容的目标窗口或框架。

l OnAdCreated方法:用于设置在界面上创建AdRotator控件时触发事件的处理方法名称。【例8.2】使用AdRotator控件在“记事本”中创建一个定义两则广告的说明文件(ad.xml)。文件 内容如下所示:

<?xmlversion=”1.0”?> <Advertisements>

<Ad>

<ImageUrl>c:\image1.jpg</ImageUrl>

<NavigateUrl></NavigateUrl>

<AlternateText>MicrosoftMainSite</AlternateText>

<Impressions>80</Impressions>

<Keyword>Topic1</Keyword>

</Ad>

<Ad>

<ImageUrl>c:\image2.jpg</ImageUrl>

<NavigateUrl></NavigateUrl>

<AlternateText>WingTipToys</AlternateText>

<Impressions>80</Impressions>

<Keyword>Topic2</Keyword>

</Ad>

</Advertisements>8.1 高级控件 然后利用AdRotator控件创建广告横幅,显示ad.xml文件中定义的广告: 在Web页中添加2个AdRotator控件(AdRotator1和AdRotator2),将它们的

AdvertisementFile属性设置为ad.xml,AdRotator1的KeyWordFilter属性设置为Topic1,AdRotator1的KeyWordFilter属性设置为Topic2。运行结果如图所示。 (a)鼠标移到AdRotator1时的显示 (b)鼠标移到AdRotator2时的显示程序运行结果8.1.3验证控件 在ASP.NET中,提供了6种验证控件自动进行数据的有效性验证,分别是: (1)CompareValidator控件(2)RangeValidator控件 (3)RegularExpressionValidator控件 (4)ValidationSummary控件(5)CustomValidator控件 (6)RequiredFieldValidator控件8.1 高级控件 1.基本验证控件属性 每种验证控件都有自己的属性,下表列出了6种验证控件共有的几个主要属性。8.1 高级控件 2.CompareValidator控件 比较验证控件的语法: <ASP:CompareValidatorOptions></ASP:CompareValidator>

其中Options处用于对比较验证控件的各种属性进行设置。

CompareValidator控件的主要属性:

l

ValueToCompare属性:用于设置要与用户输入到所验证的输入控件中的值进行比较的常数值

l

ControlToCompare属性:使用ControlToCompare属性来指定要与所验证的输入控件进行比 较的输入控件,如TextBox。 l

Operator属性:使用Operator属性指定要执行的比较操作。

下表列出了可能的比较操作。8.1 高级控件 3.RangeValidator控件 范围验证控件的语法: <ASP:RangeValidatorOptions></ASP:RangeValidator>

其中Options处用于对范围验证控件的各种属性进行设置。

RangeValidator控件的主要属性包括:

l

MinimumValue属性和MaximumValue属性:分别指定有效范围的最小值和最大值。

l

Type属性:用于指定要比较的值的数据类型。

4.RequiredFieldValidator控件

必须字段验证控件的语法: <ASP:RequiredFieldValidatorOptions></ASP:RequiredFieldValidator>

其中Options用于对必须字段验证控件的各种属性进行设置。 5.RegularExpressionValidator控件 正则表达式验证控件的语法: <ASP:RegularExpressionValidatorOptions></ASP:RegularExpressionValidator>

其中Options用于对正则表达式验证控件的各种属性进行设置。 6.CustomValidator控件 自定义证控件的语法: <ASP:CustomValidatorOptions></ASP:CustomValidator>8.1 高级控件 其中Options用于对自定义验证控件的各种属性进行设置。

7.ValidationSummary控件 验证总结验证控件的语法: <ASP:ValidationSummaryOptions></ASP:ValidationSummary>

其中Options用于对验证总结验证控件的各种属性进行设置。

ValidationSummary控件的主要属性如下:

l

DisplayMode属性:使用该属性指定ValidationSummary控件的显示格。

l

HeaderText属性:用于设置显示错误信息列表的表头。

l

ShowSummary属性:用于设置是否内联显示验证摘要。【例8.3】使用验证控件设计登录界面,利用验证控件来实现对输入内容进行自动验证。 要求: 用户名必须输入,口令和确认口令必须一致,年龄必须在18~60岁之间,

Email地址 格式必须符合Email地址的写法规则,否则显示验证错误信息。 (1) 在VS.NET中创建项目WebExamp8_3。 (2) 设计项目主页面WebForm1.aspx,包含17个控件,分别是:6个Label控件、5个验证 控件、5个TextBox控件和1个Button控件。 其中6个标签,用于显示提示信息,标签文本分别为:验证控件示例、用户名: 、口令:、确认口令:、年龄:、email地址:。 (3) 编译、运行程序。在各文本框中输入不同内容,显示不同运行结果,具体见图。

8.1 高级控件

(a)不输入用户名、口令和确认口令不符 (b)年龄不在18~60之间、email格式不对

程序运行结果8.2用户控件 8.2.1将Web窗体页转换为用户控件

将Web窗体页转换为用户控件的步骤是:

(1)创建一个基本的Web窗体页; (2)对代码进行少量更改,主要修改包括:

l

将代码隐藏基类从Page更改为UserControl l

从.aspx文件中删除<HTML>、<Head>、<BODY>和<FORM>标记

l

将ASP.NET指令类型从@Page更改为@Control l

更改Codebehind属性来引用控件的代码隐藏类文件ascx.vb l

将.aspx文件扩展名更改为.ascx (3)测试控件,方法是:创建一个新的Web窗体页,向其添加该控件,然后在浏览器中打开该页。

【例8.4】 创建一个基本的Web窗体页,该页向用户显示一个个性化的欢迎信息,将该

Web窗体页转化为Web用户控件。 (1)在VS.NET中创建项目WebExamp8_4。 (2)添加Web窗体页(welcome.aspx),各控件的主要属性设置见表。 将下面的代码添加到Button1_Click过程:

Label2.Text="Hi"&TextBox1.Text&",welcometoASP.NET!"

按CTRL+F5组合键运行该Web窗体页并对其进行测试,运行效果如图所示。

8.2用户控件

控件的属性设置图 窗体页的运行效果

(3) 将Web窗体页转换为用户控件,方法是:

①单击设计器窗口底部的“HTML”选项卡切换 到HTML视图,HTML文件如下所示: <%@PageLanguage="vb"AutoEventWireup="false"Codebehind="WebForm1.aspx.vb" Inherits="usercontrol.WebForm1"%> <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"> <HTML><Head><Title>WebForm1</Title>

<metaname="GENERATOR"content="MicrosoftVisualStudio.NET7.0"> <metaname="CODE_LANGUAGE"content="VisualBasic7.0"> <metaname="vs_defaultClientScript"content="JavaScript"> <metaname="vs_targetSchema"content="/intellisense/ie5"> </Head>8.2用户控件 <BodyMS_POSITIONING="GridLayout"> <FORMId="Form1"Method="post"Runat="server"> <ASP:LabelId="Label1"Style="Z-INDEX:101;LEFT:32px;POSITION: absolute;TOP:17px"Runat="server">Entername:</ASP:Label> <ASP:ButtonId="Button1"Style="Z-INDEX:104;LEFT:120px;POSITION: absolute;TOP:59px"Runat="server"Text="Enter"></ASP:Button> <ASP:TextBoxId="TextBox1"Style="Z-INDEX:103;LEFT:138px;POSITION: absolute;TOP:15px"Runat="server"></ASP:TextBox> <ASP:LabelId="Label2"style="Z-INDEX:102;LEFT:37px;POSITION: absolute;TOP:102px"Runat="server"></ASP:Label> </FORM> </BODY> </HTML>

从.aspx文件中删除<HTML>、<!doctype>和<Head>标记及内部内容、<BODY>和<FORM> 标记。 ③

将基类从System.Web.UI.Page更改为System.Web.UI.UserControl,然后将PublicClass声明 从WebForm1更改为welcome。 'VisualBasic PublicClasswelcome InheritsSystem.Web.UI.UserControl

保存并关闭代码隐藏文件和.aspx文件。8.2用户控件 ⑤

测试用户控件。通过创建一个新的Web窗体页并将控件添加到该页,可以对用户控件进行 测试,方法是:l

在“项目”菜单上,单击“添加Web窗体”。 l

将Name更改为WelcomeTest.aspx并单击“打开”。l

将welcome.ascx从解决方案资源管理器拖放到设计图面上。

l

在解决方案资源管理器上右击WelcomeTest.aspx,然后在快捷菜单上单击“设为起始页”。

l

按F5键运行该Web窗体页。

8.2.2直接建立用户控件

在ASP.NET中,可以它所提供的命令直接建立用户控件。具体步骤为: 1.新建或打开项目。 2.在“项目”菜单中选取“加入Web用户控件”命令。弹出“添加新项”对话框,如下图所示。8.2用户控件 3. 在“添加新项”对话框中的模板中选中“Web用户控件”,在“名称”文本框中输入用户控件 的文件名(扩展名必须是.ascx),然后按下“打开”按钮。 4. 在设计器中,像设计普通Web页的方法来设计用户控件。 5、 编译、测试、存盘即可。 8.2.3向Web窗体页添加用户控件 向Web窗体页添加用户控件的方法:

l

在Web窗体设计器中,打开要将该控件添加到的Web窗体页,并确保该页以“设计”视图显示。

l

在解决方案资源管理器中选择用户控件的文件,并将其拖到该页上。 【例8.5】 在项目中直接建立用户控件。本例创建一个用户控件,它的功能是:在Textbox 中输入数据库名和该数据库中的数据表名,在Datagrid中显示数据表中的数据。 (1)新建项目usecontrol。 (2)在“项目”菜单中选取“加入Web用户控件”命令,将弹出“添加新项”对话框。 (3)在“添加新项”对话框中的模板中选中“Web用户控件”,在“名称”文本框中输入 dataaccess.ascx,然后按下“打开”按钮。 (4)在设计器中设计用户控件。

l

窗体页中用到6个Web服务器控件,分别是:2个Label控件、2个TextBox控件、1个DataGrid 控件和1个Button控件,如图8.6所示。

l

窗体页中各控件的主要属性见表8.14。

8.2用户控件

户控件界面设计 控件的属性设置

l

编写程序代码

双击Button1按钮,在Button1_Click()事件处理中输入以下程序代码:

PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesButton1.Click DimMyCommandAsOleDbDataAdapter DimString1,name1,name2AsString DimMyDataSetAsDataSet name1=database.Text.ToString&".MDB" name2=biao.Text.ToString String1="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(name1) MyDataSet=NewDataSet() MyCommand=NewOleDbDataAdapter("Select*from"+name2,String1

8.2用户控件

MyCommand.Fill(MyDataSet,name2) myDataGrid.DataSource=MyDataSet myDataGrid.DataMember=name2 myDataGrid.DataBind() EndSub

l

编译、测试用户控件。 (5) 使用用户控件。 数据库teacher.mdb中teacher表中的数据内容见图。运行结果如图所示。

teacher表中的数据内容 程序运行结果8.3XML的应用

8.3.1什么是XML XML是可扩展标记语言,是一种存储数据的方法。XML也是一种元标记语言,本身 并没有任何标记。8.3.2使用XML的原因

以下是有关XML与HTML之间关系的几点说明:

l

XML不是要替换HTML,实际上XML可以视作对HTML的补充。

l

与HTML相似,XML不进行任何操作。

l

与HTML不同,XML标记由架构或文档的作者定义,并且是无限制的。8.3.3标记和元素 下面创建一个XML文档,用于保存图书信息。

【例8.6】 创建一个用于保存图书信息的XML文档(文件名为aa.xml)。方法是: 创建一个文本文件,输入下列数据:

1:<?xmlversion="1.0"?> 2:<books> 3:<book> 4:<author>Carson</author> 5:<priceformat="dollar">31.95</price> 6:<pubdate>05/01/2001</pubdate>8.3XML的应用 7:</book> 8:<book> 9:<author>Mary</author> 10:<priceformat="dollar">71.50</price> 11:<pubdate>04/02/2002</pubdate> 12:</book> 13:</books>

保存数据,文件扩展名定义为xml。

例8.6的解释:

l

第1行:<?xmlversion=“1.0”?>,该句是XML声明,表明这个文档是一个XML文档,且说 明这个XML文档的版本为1.0。

l

在第2行和第13行使用了<books>开标记和</books>闭标记。这个标记是根标记,因为这个 文档中的所有数据都包含在这两个标记中。

l

在第3行和第7行使用了<book>开标记和</book>闭标记,来表示一本书的信息。

l

在第8行~第15行定义了另一本书的信息。

aa.xml的显示结果如右图所示。8.3XML的应用8.3.4在ASP.NET中使用XML

1.用DataSet的WriteXML方法将数据写入XML文档。 在DataSet的WriteXML方法中,只要指明要保存XML数据的文件的路径和文件名,就 可以把DataSet中的数据以XML的格式保存在XML文档中。【例8.7】 把数据库中的数据保存在一个XML文档中。 (1)创建一个ASP.NET应用程序,在Web页的Page_Load事件中编写如下程序代码:

SubPage_Load(ByVal SenderAsObject,ByValeAsEventArgs) DimMyCommandAsOleDbDataAdapter DimString1AsString DimMyDataSetAsDataSet '定义1个DataSet实例MyDataSet String1="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("xs.MDB") MyCommand=NewOleDbDataAdapter("Select*fromxs",String1) ‘取出xs表中的所有数据

MyDataSet=NewDataSet() MyCommand.Fill(MyDataSet,“xs”) ‘将所有数据放在MyDataSet中

MyDataSet.WriteXml(“c:\student.xml”) ‘调用WriteXml方法将MyDataSet中的 ’数据写入C:盘的student.xml文件中

MyDataGrid.DataSource=MyDataSet MyDataGrid.DataMember="xs“ MyDataGrid.DataBind() EndSub8.3XML的应用 (2) XS数据库中xs表中的数据如图所示。

xs表中的数据 (3) 执行程序,在C盘根目录下创建了 文件student.xml,在记事本中打开, 文件内容显示如下: <?xmlversion="1.0"standalone="yes"?> <NewDataSet>

<xs>

<XM>张三</XM>

<XH>0001</XH>

<XB>女</XB>

<JG>南京</JG>

</xs>

<xs>

<XM>李四</XM>

<XH>0002</XH>

<XB>男</XB>

<JG>河北</JG>

</xs>

<xs>

<XM>王涛</XM>

<XH>0003</XH>

<XB>男</XB>

<JG>上海</JG>

8.3XML的应用

</xs>

<xs>

<XM>张影</XM>

<XH>0004</XH>

<XB>女</XB>

<JG>河南</JG>

</xs>

</NewDataSet>

2.用DataSet的ReadXML方法读出XML文档中的数据

使用DataSet的ReadXML方法,只要指明要读取的XML文档的路径和文件名,就可以很 方便地读出XML文档中的所有数据。例如:

DimMyDataSetAsDataSet MyDataSet.ReadXml(server.mappath("student.xml"))

MyDataGrid.DataSource=MyDataSet.tables(0).DefaultVie MyDataGrid.DataBind()

上述程序段,实现了将当前路径下的student.xml文档内容通过DataSet的ReadXML方法读出,并将读出数据在DataGrid控件中显示的功能。8.4应用程序环境设置8.4.1了解ASP.NET配置 1.Machine.config文件和Web.config文件

ASP.NET的所有配置文件都是XML格式的文件。Machine.config包含这台服务器上 所有ASP.NET应用程序的默认设置,包含整个计算机范围内的程序集绑定、内置远程处理 信道等的配置设置。在一个系统中,只能有一个Machine.config文件,而可以有多个

web.config文件。Machine.config文件和Web.config文件在语法上没有任何区别。 2.配置文件中常用的标记 每个配置文件都包含XML标记和子标记的嵌套层次结构,这些标记带有指定配置设 置的属性。注意:XML标记和属性是区分大小写的。 一般,配置文件的XML语法格式如下所示: <configuration> <configSections> <sectionname="[sectionname]" type="[class]"/> <sectionGroupname="mySectionGroup"> <sectionname="[mySection[" type="[class]"/> </sectionGroup> </configSections> </configuration>8.4应用程序环境设置

<configuration>和</configuration>标记间的配置信息可分为下列三种不同类型的元素:

l

配置节处理程序声明 配置节处理程序声明位于配置文件顶部<configSections>和</configSections>标记之间。

l

配置节组 节标记可以使用节组标记来进一步限定,以便节划分成逻辑组。

l

配置节设置区域 配置节设置区域包含实际的配置设置。

注意:是否使用配置节组完全由用户决定,并不一定要使用节组标记来划分节标记。

其他常用的元素标记及其功能见下表8.4应用程序环境设置 下面的Web.config文件示例声明两个配置<section>处理程序,一个是管理应用程序设置, 另一个是管理会话状态。

<configuration> <configSections> <sectionname="appSettings" type="System.Configuration.NameValueFileSectionHandler, System,Version=1.0.3300.0, Culture=neutral,PublicKeyToken=b77a5c561934e089"/> <sectionname="sessionState" type="System.Web.SessionState.SessionStateSectionHandler, System.Web,Version=1.0.3300.0,Culture=neutral,

PublicKeyToken=b03f5f7f11d50a3a"

allowDefinition="MachineToApplication"/> </configSections> <appSettings> <addkey="dsn"value="localhost;uid=MyUserName;pwd=;"/> <addkey="msmqserver"value="server\myqueue"/> </appSettings> <sessionStatecookieless="true"timeout="10"/> </configuration>8.4应用程序环境设置8.4.2使用缓存

ASP.NET提供了强有力的缓存架构。除此之外,ASP.NET还提供了下列缓存:

l

输出缓存

l

碎片缓存

l

数据缓存

1.输出缓存 为了以更高的效率显示动态生成的页面,ASP.NET提供了输出缓存。

2.碎片缓存

如果很多页面中都有相同的部分,ASP.NET可以缓存页面的这个部分,而不需缓存整 个页面,这就是碎片缓存。

@OutputCache的语法: <%@OutputCacheDuration="#ofseconds"Location="Any|Client|Downstream|Server| None"VaryByControl="controlname"VaryByCustom="browser|customstring"

VaryByHeader="headers"VaryByParam="parametername"%> @OutputCache的属性如下:

(1)Duration属性 (2)Location属性 (3)VaryByCustom属性 (4)VaryByHeader属性 (5)VaryByParam属性 (6)VaryByControl属性8.4应用程序环境设置 3.数据缓存 数据缓存是用来保存信息的缓存。使用ASP.NET缓存则可以实现全局的数据传送。另 外与Application相比,使用缓存可以实现自动的锁定

ASP.NET缓存的使用方法与Application和Session对象非常类似。例如,要在缓存中增 加一个数据项可以使用下面的语句:

Cache("name")="Tony"

或者

Cache.insert("name","Tony")

这样,在ASP.NET缓存中就增加了一个名字为name的数据,它的值是Tony。若要在 其他的页面中访问它,可以通过Cache("name")得到。 为了避免出现缓存不足的现象,应及时清理缓存中保存的不再有用的数据,具体删 除的方法是:

cache.remove("name")8.5WebService简介8.5.1了解Web服务

Web服务是具有各种程序功能的众多单元,通过标准化的通信协议(HTTP)及数据 格式(XML)公开给客户端。

可以把Web服务理解成应用程序当中所使用的完成特定任务的一个函数。 与组件类似,Web服务表示可以重复使用的黑匣功能,而无需关心服务实现的方式。

l

使用XML构架:Web服务使用XML作为表示数据的标准方法。

l

SOAP协议:

简单对象访问协议(SOAP)是一个用来在分散/分布式的环境中交换 信息的简单协议,它是一个基于XML的协议。

l

服务描述语言WSDL l

UDDI:

规范定义了一个发布和发现有关Web服务信息的标准方法。

8.5.2创建Web服务

1. 声明Web服务 声明Web服务的语法: <%@WebServiceLanguage="VB"Class="Classname"%> 2. 创建Web服务类 每个.asmx文件都与一个单独的类相关联,Web服务类定义的语法如下所示:

ImportsSystem.Web.Services8.5WebService简介

<WebService(Namespace:=“/”)>_PublicClassClassNam

InheritsSystem.Web.Services.WebService

‘Web服务公开的方法

EndClass

说明:

l

ImportsSystem.Web.Services:用Imports语句以导入System.Web.Services命名空间。l

<WebService()>属性指定XML命名空间:基于XML命名空间的Web服务使用XML命 名空间对它们进行唯一标识。

l

用<WebMethod()>属性公开方法:声明了实现Web服务的后,需要添加一个或多个为

Web服务提供各种功能的方法。 将<WebMethod()>属性添加到ASP.NET方法中的语法为:

<WebMethod()>_ PublicFunctionMethodName()AsReturnType

'方法代码

EndFunction

下面以一个实例介绍如何创建ASP.NETWeb服务。【例8.8】 创建一个可运行的Web服务。此服务中有一个方法,方法的功能就是返回字符串 “Hello,World!”。创建ASP.NETWeb服务项目的步骤: (1)在“文件”菜单上指向“新建”,然后单击“项目”。 (2)在“新建项目”对话框中,选择“VisualBasic项目”单击“ASP.NETWeb服务”图标。8.5WebService简介 (3) 输入要在其中开发

XMLWebservices的Web服务器地址,默认情况下,项目使用本地 计算机,即http://localhost,并将helloservice1指定为目录名。如图所示。 创建ASP.NETWeb服务 在代码编辑器中查看后台代码 (4) 单击“确定”创建项目。 (5) 选择“视图”“代码”选项,VS.NET将显示程序的源代码。如图8.12所示。

(6) 添加一个名为HelloWorld的方法的方法定义,返回类型为String,返回的字符串 为“HelloWorld!” <WebMethod()>_ PublicFunctionHelloWorld()AsString return"HelloWorld!" EndFunction8.5WebService简介 (7) 保存文件。 (8) 输入Service1.asmx文件的URL地址,在浏览器中浏览该Web服务。该Web服务的初始 请求的输出结果见图。

Web服务的初始请求的输出

WSDL协定的部分内容 (9) 单击图中的“服务说明”链接,ASP.NET会返回描述该Web服务的WSDL协定,显示 的部分内容见图。 (10) 单击图中的“HelloWorld”操作的链接。部分显示结果见图。 (11) 单击图中的“调用“按钮,会在一个新的浏览器窗口中显示调用该方法返回的XML

结果。输出结果见图8.16。 以上就是通过在.asmx文件中定义Web服务类来实现Web服务的过程。8.5WebService简介 请求与响应的语法

调用返回的XML结果8.5.3公布Web服务

公布Web服务有两种解决方案:用发现文档公布Web服务和通过UDDI公布Web服务。

1.用发现文档公布Web服务 发现文档是一个基于XML的文档,包含对Web服务和其他发现文档的引用。发现文件的 扩展名为.disco,在ASP.NET中创建Web服务时自动生成该文件。 2.通过UDDI公布Web服务 可以通过使用UDDI的方法公布Web服务。这种方法是由Ariba、IBM和Microsoft等多家厂商共同发起的,专门用于提供一个基于Internet的业务注册表。8.5WebService简介

8.5.4使用Web服务 在VisualStudio.NET中创建XMLWeb服务客户程序可以通过需要以下步骤:

l

使用模板创建客户程序项目。

l

使用VisualStudio.NET提供的工具创建访问XMLWeb服务的代理类并把它添加到客 户程序项目中。

l

在客户程序的代码中创建代理类实例并通过它来调用XMLWeb服务的方法。【例8.9】创建一使用例8.8中所建helloservice1Web服务的客户程序。创建步骤: (1)在VisualStudio.NET中,选择“文件”“新建”“项目”。显示新建项目对话框。 (2)在新建项目对话框中,单击VisualBasicProject,在模板中点击ASP.NETWeb应用程序。

(3)将1个Button控件和1个TextBox控件拖放到网页上

,设置Button控件的Text属性为callhelloservices。 (4)选择“项目”“添加Web引用”选项,VisualStudio.NET将会显示如图8.17所示的“添加Web引用”对话框。

(5)在图中的地址字段中,输入helloservice1Web服务的WSDL文件的URL。输入localhost/helloservice1/service1.asmx?WSDL并按回车键。在对话框中将加载文件的内容,如图所示。点击“添加引用”按钮。8.5WebService简介 “添加Web引用”对话框

在对话框中将加载WSDL文件的内容

程序的运行结果8.5WebService简介 (6) 在Button1_Click事件中编写如下代码:

PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesButton1.Click DimWebserviceobjectAsNewlocalhost.Service1() ‘创建localhost.Service1()的实例

Webserviceobject Try TextBox1.Text=Webserviceobject.HelloWorld() ‘调用Service1的HelloWorld方法

CatchexAsException ‘发现异常在TextBox1中显示异常信息

TextBox1.Text="ExceptioninWebservice:"&ex.Message‘ EndTry EndSub (7) 编译、运行程序。单击“callhelloservices”按钮,则调用调用Service1的HelloWorld方法, 在TextBox中显示“HelloWorld!”,如图所示。【例8.10】综合实例。程序功能:完成公司招聘信息的发布和各公司招聘信息的浏览。发布的 招聘信息存储到C:盘的data.xml文件中,浏览各公司的招聘信息是将data.xml文件 中的数据读出来,显示在DataGrid中。

1)在VS.NET中创建项目WebExamp8_10。 2)创建项目中的窗体页:本例设计了4个窗体页、1个用户控件和1个Web服务程序。 4个窗体页分别是:8.5WebService简介

(1)login.aspx:登录界面 (2)welcome.aspx:欢迎进入系统界面 (3)zhaopin.aspx:某公司招聘信息发布页面 (4)browse.aspx:浏览各公司招聘信息页面 1个用户控件:

navigator.ascx:该用户控件包括welcome.aspx、zhaopin.aspx和browse.aspx窗体页都包含的标题和导航条。 1个Web服务程序:该Web服务完成将公司发布的招聘信息写入data.xml文件。

(1)Web服务的设计

在“文件”菜单上指向“新建”,然后单击“项目”。

l

在“新建项目”对话框中,选择“VisualBasic项目”单击“ASP.NETWeb服务”图标。

l

输入要在其中开发XMLWebservices的Web服务器地址,默认情况下,项目使用本地 计算机,即http://localhost,并将writefile指定为目录名。

l

单击“确定”创建项目。

l

选择“视图”菜单的“代码”,输入如下所示的程序:

ImportsSystem ImportsSystem.IO ImportsSystem.Data ImportsSystem.Data.OleDb ImportsSystem.IO.FileStream ImportsSystem.Web.Services8.5WebService简介 <WebMethod()>PublicFunctionwritexmldata(ByValcompanyAsString,ByValskillsAsString, ByValeducationAsString,ByValexperienceAsString,ByValsalaryAsString)AsBoolean DimmydatasetAsNewDataSet() DimfilePathAsString DimnewrowAsDataRow DimfinAsFileStream DimfoutAsFileStream

'定义输入流文件变量fin,内容为c:\data.xml文件内容。

fin=NewFileStream("c:\data.xml",FileMode.Open,FileAccess.Read,FileShare.ReadWrite) mydataset.ReadXml(fin)'将流文件fin内容读入数据集mydataset fin.Close() newrow=mydataset.Tables(0).NewRow newrow("公司名称")=company newrow("技术要求")=skills newrow("学历要求")=education newrow("工作经验")=experience newrow("工资待遇")=salary mydataset.Tables(0).Rows.Add(newrow)'在mydataset加入1行

fout=NewFileStream("c:\data.xml",FileMode.Open,FileAccess.Write,

FileShare.ReadWrite) mydataset.WriteXml(fout)'将增加1行后的数据重新写入c:\data.xml8.5WebService简介

fout.Close() ReturnTrue EndFunction(2)用户控件的设计

l

新建项目。

l

在“项目”菜单中选取“加入Web用户控件”命令。弹出“添加新项”对话框。

l

在“添加新项”对话框中的模板中选中“Web用户控件”,在“名称”文本框中输入 navigator.ascx,然后按下“打开”按钮。

l

在设计器中,设计用户控件。

窗体页中包含4个Web服务器控件,分别是:1个Image控件和3个HyperLink控件, 界面如图所示。窗体页中各控件的属性见表。

各控件的属性设置8.5WebService简介用户控件界面

(3)窗体页设计 选择“项目”菜单中的“添加Web窗体……”,在“添加新项”对话框的名称中输入login.aspx,单击“打开”按钮,拖动控件到窗体进行设计。用同样的方法加入welcome.aspx、zhaopin.aspx

和browse.aspx窗体。

login.aspx窗体界面如图所示,其中用到的控件及其属性设置见下表。8.5WebService简介

登录界面设计

双击entry按钮,在entry_Click()事件处理中输入以下程序代码:

PrivateSubentry_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles entry.Click If(name.Text="aaa"Andpassword.Text="123456")Then Response.Redirect("welcome.aspx") Else message.Text="用户名或密码错误,请重新输入。"

name.Text="" passwor

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论