《教学课件第9章Web网络应用》由会员分享,可在线阅读,更多相关《教学课件第9章Web网络应用(46页珍藏版)》请在金锄头文库上搜索。
1、第9章 Web网络应用Web网络应用是C#语言的重点应用之一,主要是创建ASP.NET网络应用程序、Web服务等。其中ASP.NET应用程序的框架设计,打破了原有的传统网页的模式,在技术上有所创新。本章将主要介绍如何创建ASP.NET网络应用程序。9.1 ASP.NET简介ASP.NET是创建动态网页的新技术,继承了微软公司的两项主要技术:Active Server Page(ASP)和.NET。ASP.NET不仅可以生成动态Web页面,还提供了大量易用、可复用的预定义控件,使软件开发变得更加快捷。9.1.1 什么是ASP.NET在Web应用中,存在两种页面:静态页面和动态页面,如图所示。9.
2、1.2 IIS管理ASPX页面当完成Web系统开发后,如何才能让其他用户通过网络来使用呢?Web服务器将提供这种服务。Web服务器是一个软件,用于管理Web页面,使这些页面能够通过网络在客户端的浏览器上使用。客户端可能与Web服务器在同一台机器上,也可能相隔万里。常见的Web服务器包括Apache,IIS以及WebSphere等。本书将详细介绍微软公司的IIS Web服务器。这是因为IIS服务器是目前能够运行ASP.NET的主要服务器。9.2 ASP.NET语法ASP.NET作为一种新的动态页面开发技术,与以前的ASP相比有了新的内容,本节将介绍其基本的语法。9.2.1 剖析ASPX页面ASP
3、.NET本身并非一种编程语言,而是一种创建动态页面的技术,用于把编程语言(Visual Basic.NET,C#,JavaScript)代码段嵌入到页面的HTML中。二者混合在一起,构成了ASPX页面。把编程语言代码嵌入HTML是指利用HTML标记,编程语言代码可以同HTML混为一体,并由Web服务器(IIS)将其从HTML中识别出来,交给ASP.NET模块编译执行,完成一定功能,最后将执行结果以HTML形式返回浏览器。9.2.2 使用嵌入代码在下面的各部分中,将介绍出现在ASPX文件中的ASP.NET常用语法。首先是标记对。使用过ASP的读者肯定不会对标记陌生,包含在标记内部的代码,将会在服
4、务器上执行,并动态生成HTML。下面的示例演示ASP.NET如何使用动态产生HTML。9.2.3 使用.嵌入代码同标记一样,.标记用于在HTML中标记指令代码。对于ASP.NET,标记有两个特殊的属性:Language和Runat=“Server”。9.2.4 使用Server控件控件是ASPX页面上重要的元素,如输入框、按钮、标签等。同HTML中的控件不同,ASPX页面上主要使用Server控件,其特征是拥有Runat=“Server”属性。Runat=“Server”是Server控件非常重要的属性。当ASP.NET网页执行时,.NET会检查页面上的标签有无Runat=“Server”属性
5、。如果没有,就会被直接发送到客户端的浏览器进行解析;如果有,则表示这个控件可以被.NET程序所控制,需要等到程序执行完毕,再将HTML控件的执行结果发送到客户端浏览器。9.2.5 使用在之间的代码为注释语句,当ASP.NET模块处理ASPX文档时,将不认为它们是嵌入在HTML中的可执行代码。下面仍以节程序Tag1为例,若在中的代码添加注释,改变为:1.9.2.6 ASP.NET 2.0新特性ASP.NET从1.0版本升级到1.1变化不是很大。然而,从ASP.NET 1.x升级到2.0,ASP.NET技术增加了大量方便、实用的新特性。总体来说,ASP.NET 2.0的新特征主要体现在新的服务器控
6、件、页面框架、服务与接口三个方面。1更丰富的服务器控件2页面框架3服务与接口9.2.7 用设置页面属性在ASPX页面的首页,将使用来设置整个页面的属性,包括以下几个属性:(1)Language=“C#|VB”:设置本页面所采用的编程语言,默认为“C#”;(2)ResponseEdcodeing=“.”:设置ASPX页面编码方式,默认为Unicode;(3)Trace=“True|False”:设置是否在程序中显示代码直行的跟踪(Trace)信息;(4)TraceMode=“SortType”:设置跟踪信息的排序方式,默认为根据执行时间排序“SortByTime”。9.2.8 使用引入类库ASP
7、.NET需要使用.NET基础类库的支持,如果想要引入某个命名空间,需要使用指令。例如,要引入System.Data空间,需要用下面的语句。这样,在本页面中,就可以使用数据库操作的各个类了。另外,ASP.NET默认支持8个空间,即这8个空间中的类不需要使用,可以直接使用。这8个空间简述如下。(1)System:包含最基本的类及数据类型。(2)System.Text:包含各种编码类、字符编码转换类。(3)System.Collections:包含定义各种集合的类,如列表、队列、数组、哈希表、字典等。(4)System.Web:包含了Web应用中客户端/服务器间联系的各种类。(5)System.We
8、b.UI:包含了各种用于Web的服务器控件。(6)System.Web.UI.HtmlControls:包含了HTML控件。(7)System.Web.UI.WebControls:包含了Web控件。(8)System.Threading:提供多线程变成的类。 9.3 ASP.NET内置对象由于Web服务是基于HTTP协议传递数据的,而HTTP协议是一个不记录中间状态的协议,即在客户端使用浏览器访问了Web应用系统后,浏览器将不会保留每一次访问系统的中间信息。如果想要保留这些信息,可以使用ASP.NET提供的内置对象,用这些对象来保存Web服务状态信息。这些对象包括Application,Se
9、ssion,Server,Response及Request等。9.3.1 使用Application对象保存数据Application对象是System.Web.HttpApplicationState类的实例,对象内保存的信息可以在Web服务整个运行期间保存,并且可以被调用Web服务的所有用户使用。如果Web服务类派生自WebService类,那么就可以直接使用Application对象。在Web服务中使用Application对象主要包括以下两种情况。1在Web服务中,将状态保存到Application对象2从Application对象中获取状态信息9.3.2 使用Session对象保存数
10、据与Application对象类似,Session对象也可以在整个Web服务运行过程中保存信息,但它保存的信息只能由单个用户所访问。此处所指的用户是指一次访问Web服务过程的用户,如果一个用户在一次访问Web服务后离开,稍后又重新访问Web服务,那么Web服务也将其视为两个不同的用户。对于从WebService中派生的Web服务类,只有当WebMethod特性的EnableSession属性设置为True时,才能使用Session保存信息。9.3.3 访问Server对象Server对象是System.Web.HttpServerUtility类的实例,提供了一系列可处理Web请求的方法。通过
11、Server对象,Web服务使用者可以获取Web服务所在服务器的名称、物理路径等。下面的代码,在Web服务中添加了一个GetServerName()方法,该方法利用Server对象返回服务器名称:1.WebMethod(2.Description=返回Web服务器名称3.)4.public string GetServerName()5.6.return Server.MachineName;7. 9.3.4 访问Request对象同ASP.NET Web程序一样,Web服务同样也可以使用ASP.NET内置的Request对象,通过此对象,客户可以向Web服务发送HTTP请求信息。用户可以通过
12、WebService类的Context属性来访问Request对象,Request对象的常用属性和方法说明9.3.5 访问Response对象与Request对象相反,Web服务中的Response对象实现Web服务向客户发送信息的功能。与ASP.NET应用程序类似,Web服务中的Response对象也是System.Web.HttpResponse类的实例,不同之处在于,在Web服务中需要通过WebServices类的Context属性来获取Response对象。9.4 代码绑定技术前面介绍了使用和方式把C#代码嵌入到HTML中的方式,这也是其他动态网页开发语言常用的方式。这种方式的缺点在于
13、,代码并不容易管理,整体结构性不强,页面的逻辑功能和显示分离的不够清晰。.NET采用了一种更好的策略:代码绑定技术。9.4.1 分离显示功能和逻辑功能ASP.NET的代码绑定技术的目的是:把代码文件(C#代码)和页面显示文件(HTML代码)分离在不同的文档中,各自独立完成Web页面的逻辑功能和显示功能;然后通过一个机制将两者联系在一起,达到把C#代码嵌入到HTML中的效果。在向一个ASP.NET程序中添加一个ASPX页面时,ASP.NET将自动生成一个相应的CS文件。其中,.aspx文件主要用于实现页面的显示,而.cs文件用于完成页面的数据处理和逻辑功能。以节给出的“程序Tag1为例,打开程序
14、所在的目录,会发现包含以下文件:(1)WebForm1.aspx;(2)WebForm1.aspx.cs。9.4.2 使用绑定代码ASP.NET 2.0使用指令完成代码绑定。为了更好地显示两个文件的绑定关系,请读者重新实现本书节给出的ASP.NET示例程序“HelloWorld_ASPNET”,然后对.NET自动生成的ASPX页面进行剖析。1ASPX页面的结构2实现页面功能的C#代码实现9.4.3 控件事件接收用户输入ASP.NET用指令把页面显示和需要完成的功能代码绑定在一起,然而,当用户操作页面时,如何根据用户的动作触发响应的代码呢?例如,在节给出的示例中(如图9-10所示),当用户单击“
15、显示”按钮时,页面如何知道这时需要触发执行.cs文件中的以下代码:1./单击按钮触发的事件2.private void btnShow_Click(object sender, System.EventArgs e)3.4. this.lblDisplay.Text=Hello World, ASP.NET.;5.9.5 使 用 控 件可以说,Web控件是动态网页技术的一大进步,真正地将后台程序和前端网页融合在一起。相对于HTML控件而言,Web控件功能更加强大,也更加抽象,不仅能够完成HTML控件的所有功能,还包括一些完成特定功能的控件,如日历控件、数据绑定控件等。9.5.1 文本框控件文本
16、框控件(TextBox)是常用的Web服务器端控件之一,主要用于文本的输入。1功能2属性和事件3示例9.5.2 按钮控件按钮控件(Button)是常用的Web服务器端控件之一,主要用于交互式命令操作。1功能按钮是页面上最常用的控件之一,用户常常通过单击按钮来完成提交、确认等功能。2属性和事件3示例4与HTML控件比较从该例可以看出,Button相对于HtmlInputButton对象,增加的功能包括:可以使用Command事件,结合CommandName属性和CommandArgument属性,使多个按钮可以共享同一个单击事件方法。 9.5.3 单选框控件单选框控件(RadioButton)是
17、常用的Web服务器端控件之一,主要用于数据列表选项。1功能RadioButton控件允许用户选择True状态或False状态,但是只能选择其一,与HtmlInput RadioButton相似。有两种方式在页面上添加一个RadioButton对象。2属性和事件3示例9.5.4 链接按钮控件链接按钮控件(LinkButton)是常用的Web服务器端控件之一,主要用于交互式命令操作。1功能LinkButton控件是Button和HyperLink控件的结合,实现具有超级链接样式的按钮。2属性和事件LinkButton对象的成员与Button对象非常相似,具有CommandName和CommandA
18、rgument属性,以及Click和Command事件。3示例9.5.5 下拉框控件下拉框控件(DropDownList)是常用的Web服务器端控件之一,主要用于显示数据列表。1功能2属性和事件3示例4与HTML控件比较9.5.6 列表框控件ListBox列表框控件(ListBox)是常用的Web服务器端控件之一,主要用于显示数据列表。1功能2属性和事件3示例4与HTML控件比较9.5.7 复选框控件复选框控件(CheckBox)是常用的Web服务器端控件之一,主要用于交互式的数据选项。1功能2属性和事件3示例4与HTML控件比较9.5.8 图像控件图像控件(Image)是常用的Web服务器端
19、控件之一,主要用于显示图像。1功能2属性和事件3示例4与HTML控件比较9.6 Web服务随着电子商务等Web应用的发展,相应的软件技术得到了很大的提升,目前最热门并且最被看好的技术就是Web服务(Web Service)。简单地说,Web服务是一种想把全世界的Internet/Intranet变成一个虚拟计算环境的观念和技术。使用者可以使用任何的客户端软件(如浏览器、Window或是Java应用程序,以及电子移动设备等),来调用分布于这个环境中的Web服务,享受它们提供的各种服务。而Web服务本身则可以由任何的技术编写,例如程序设计人员可以使用C#,Java,Delphi或C/C+等语言和工
20、具来开发。9.6.1 Web服务简介Web服务是一个黑盒子,提供了一系列对外服务的接口,但隐藏了这些服务的具体实现细节。形形色色的Web服务黑盒子散布在Internet上,在开发应用程序时,程序设计人员可以通过URL使用它们提供的服务,从而实现自己的应用。9.6.2 创建Web服务通过Visual Studio.NET创建和使用Web服务非常方便。本节介绍如何利用Visual Studio.NET创建Web服务以及使用Web服务。在Visual Studio.NET中创建Web服务的步骤如下。9.6.3 创建Web服务类从上面的介绍可知,Web服务中的类与通常的C#类的定义非常相似。区别在于,
21、Web服务的类从System.Web.Services.WebService中派生,这个类包含了ASP.NET的内置对象,如Application,Session对象等。另外,Web服务类必须具有public访问属性,以及一个默认的构造函数(普通的类可以没有构造函数)。9.6.4 创建Web服务方法与普通的C#类一样,Web服务类需要包含方法、属性等成员,区别在于:Web服务类中对外输出的接口方法(即被使用者调用的方法,称为接口方法或输出方法)具有特殊的定义要求,这些要求包括:(1)接口方法必须具有public访问级别;(2)Web服务类必须在其接口方法上使用WebMethod特性,即在方法前
22、必须加上“WebMethod(.)”。9.6.5 使用Web服务下面通过创建一个使用Web服务的ASP.NET Web应用程序,讨论如何在使用者的程序中使用Web服务。许多应用都能调用Web服务,如组件、桌面程序、Web程序以及其他的Web服务等。9.6.6 示例:天气预报Web服务天气预报是生活中人们最关心的问题之一,有很多网站都推出了可以预报某个城市天气情况的应用小程序。本节主要讲解如何调用天气预报的Web服务,从而获得某个城市的天气情况,包括天气、温度和风向等信息。在获取天气信息之前,需要找到能够准确地提供天气信息的Web服务。提供天气预报的Web服务有很多,例如,http:/ 在线投票
23、系统在线投票系统是现在很多网站上热门的应用程序之一。通过投票系统,可以更好地了解到客户的需求。本节将介绍一个简单的在线投票系统,其中主要涉及数据库的操作和部分常用控件的应用。9.7.1 数据库设计设计开发的第一步是进行业务分析和数据库设计。在线投票应用程序的业务逻辑比较简单,主要有两个功能:用户投票和查看投票结果。数据库设计上,用一张数据表就可以达到所需功能。数据表命名为VoteItem,表VoteItem的详细信息如表所示。列名 数据类型 说明ItemIDInt(自动编号)选项编号ItemNamenvarchar(30)选项名称ItemCount int投票数量9.7.2 数据操作类的设计数
24、据库设计完成后,要做的就是架构设计。本小节只作一个较简单的设计。应用程序最终是要与数据库交互的,所以,需要创建一个通用的数据库抽象类,目的是为了代码的重用性。通用数据库抽象类的完整代码如下所示。(具体内容请参照本书)9.7.3 创建页面投票页面相对简单,使用几个常用的服务器控件,包括文本控件、按钮控件等。9.7.4 投票功能创建完页面之后,还要编写投票的功能代码。当用户选择完选项之后,单击“我要投票”按钮,系统就要记录下用户的选项,把数据保存在数据库中。单击“查看投票”按钮,页面就会跳转到查看投票页面。9.7.5 投票统计投票统计功能是把投票的结果统计出来,并以某种方式显示。这个示例中,把投票结果以进度条的形式显示,并以百分比的格式统计结果:本章主要讲解了C#的Web网络程序的应用,包括语法基础、内置对象、常用控件和Web服务等。其中,控件的使用是重点,也是基础。除了本章介绍的几个常用控件之外,读者还应对其他控件加以了解。在本章的最后,介绍了一个相对简单的实例,即在线投票系统。9.8 小结