第10章Web应用程序开发_第1页
第10章Web应用程序开发_第2页
第10章Web应用程序开发_第3页
第10章Web应用程序开发_第4页
第10章Web应用程序开发_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

1、第第10章章 Web应用程序开发应用程序开发ASP.NET是Microsoft的新一代服务器端技术,是.NET框架的一部分。运用C#可以创建Web应用程序。本章将介绍ASP.NET的基本概念及如何使用ASP.NET建立Web应用程序。10.1 ASP.NET简介简介10.1.1 编辑编辑ASP.NET程序程序由于ASP.NET是一种服务器端的技术, ASP.NET代码的运行必须是在Web服务器上。发布ASP.NET程序的条件: Web服务器安装的软件:.NET Framework SDK以及IIS。 发布ASP.NET程序的目录:可以将ASP.NET程序代码保存在IIS根目录下,也可以存放在虚

2、拟目录中。10.1.1 编辑编辑ASP.NET程序程序IIS的安装,可以在控制面板“添加/删除程序”中的“添加/删除Windows组件”,选择“Internet信息服务(IIS)”,选择“下一步”直到完成。显示如图10.1所示 图图10.1 IIS安装安装10.1.1 编辑编辑ASP.NET程序程序需要说明的是.NET 安装的顺序应该是先装IIS,再装VS.NET,如果次序反了,或者IIS重装了,就需要使用aspnet_regiis.exe -i来重新安装IIS 。在C: %SystemRoot%Microsoft.NETFrameworkv1.1.4322目录下,运行下面的命令:aspnet

3、_regiis.exe i。如图10.2所示。图图10.2 IIS启动启动如果已经安装了Visual Studio.NET,则.NET Framework SDK不需要另外安装,否则要下载安装.NET Framework SDK包。 10.1.1 编辑编辑ASP.NET程序程序IIS默认的根目录是“c:Inetpubwwroot”, ASP.NET代码一般就存放在这个根目录下。但是,ASP.NET代码也可通过新建虚拟目录存放在根目录以外。选择“管理工具”的“Internet信息服务”,将鼠标移到“默认网站”位置,右击鼠标。选择“新建” “虚拟目录”。这里将虚拟目录命名为ASP.NET,目录指向

4、D:APS.NET。显示如图10.3所示。 图图10.3 建立虚拟目录建立虚拟目录10.1.1 编辑编辑ASP.NET程序程序下面就来新建一个ASP.NET程序。打开Visual Studio.NET,选择“文件”“新建”“项目”,在“新建项目”窗体的项目类型选中Visual C#,右边的模板选择ASP.NET Web应用程序。如图10.4所示。图图10.4 新建新建ASP.NET Web应用程序应用程序当然,创建的项目位置也可以为http:/localhost,项目实际存放在目录“c:Inetpubwwwroot”。将项目名改为Multiply。 10.1.1 编辑编辑ASP.NET程序程序

5、逐个添加控件,这个过程与Windows添加控件过程相同。在“视图”“工具箱”,选择“Web窗体”,将控件拖入页面。每一个控件的左上角都有一个小的绿箭头,表示它是一个Web控件。ASP.NET的控件分为两类:HTML控件和Web控件,在后面将作较详细的讲解。将WebForm1.aspx重命名为Multiply.aspx。页面控件设置如表10.1所示。 表表10.1 属性修改属性修改10.1.1 编辑编辑ASP.NET程序程序双击EqualButton控件,为EqualButton添加Click事件,如下所示:private void EqualButton_Click(object sender

6、, System.EventArgs e)ResultLabel.Text=(double.Parse(NumberText1.Text)*double.Parse(NumberText2.Text).ToString();生成解决方案后运行,显示如图10.5所示。图图10.5 Multiply的运行页面的运行页面10.1.1 编辑编辑ASP.NET程序程序Multiply项目文件夹中生成文件的扩展名及说明如表10.2所示。表表10.2 ASP.NET扩展名扩展名10.1.2 ASP.NET程序结构程序结构为了更深入了解ASP.NET,下面分析Multiply.aspx和Multiply.as

7、px.cs的代码。如果将Web窗体设计器中的Multiply.aspx从“设计”转换到“HTML”视图,看到的文件非常类似于HTML文件,但与HTML文件又不同。【例【例10.1】ASP.NET的页面文件Multiply.aspxWebForm1【例【例10.1】 Number1 Number2 *【例【例10.1】 【例【例10.1】与HTML文件不同之处在于: 上述代码中第一行:Page language=c#表明了采用编程语言为C#,ASP.NET代码也可以采用其它的编程语言,如VB或JScript语言。对应的C#程序文件为Multiply.aspx.cs、对应的代码类为Multiply

8、.WebForm1(Inherits=Multiply.WebForm1)。Multiply.aspx都是标记语言,所有的程序代码都放在了Multiply.aspx.cs中,ASP.NET这种形式的代码与页面文件的分离,是非常有好处的。 Multiply.aspx中标签Label、按钮Button、文本框TextBox之前都加上了前缀“asp:”,表明它们是服务器控件,区别于ASP.NET以前的静态HTML,也区别于ASP.NET的一般HTML控件。每一个服务器控件都有runat=“server”,HTML控件也具有这样的属性,表明它们运行于服务器端,且拥用各种可编程属性及事件。 10.1.2

9、 ASP.NET程序结构程序结构【例【例10.2】ASP.NET页面的代码文件Multiply.aspx.csusing System;using System.Collections;using System.ComponentModel;using System.Data;using System.Drawing;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls; / 包含一些必

10、需的系统类库【例【例10.2】namespace Multiply / Multiply命名空间/ / WebForm1 的摘要说明。/ public class WebForm1 : System.Web.UI.Page / WebForm1类从System.Web.UI.Page类继承而来 / System.Web.UI.HTMLControls包含了HTML控件的类 / System.Web.UI.WebControls包含了各种服务器控件 protected System.Web.UI.WebControls.Label NumberLabel1; protected System.W

11、eb.UI.WebControls.Label NumberLabel2; protected System.Web.UI.WebControls.TextBox NumberText1; protected System.Web.UI.WebControls.Label MultiplyLabel; protected System.Web.UI.WebControls.TextBox NumberText2; protected System.Web.UI.WebControls.Label ResultLabel;【例【例10.2】 protected System.Web.UI.Web

12、Controls.Button EqualButton; / 定义了页面各个服务器控件private void Page_Load(object sender, System.EventArgs e)/ 在此处放置用户代码以初始化页面#region Web 窗体设计器生成的代码override protected void OnInit(EventArgs e)/ CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。InitializeComponent();base.OnInit(e);/ / 绑定页面,并指定事件处理方法来控制事件。不必编写事件绑定代码, 【例【例10.

13、2】 / 使用Visual Studio.NET的Web窗体设计器,事件绑定代码是双击处理程序的控件 / 所生成代码的一部分。 private void InitializeComponent() this.EqualButton.Click += new System.EventHandler(this.EqualButton_Click); this.Load += new System.EventHandler(this.Page_Load); #endregion / EqualButton按钮的Click事件处理函数,相加并显示结果 private void EqualButton_

14、Click(object sender, System.EventArgs e) ResultLabel.Text=(double.Parse(NumberText1.Text)*double.Parse (NumberText2.Text).ToString();【例【例10.2】可以看出,ASP.NET页面所对应的服务器端代码与在Win Form中所用到的C#代码在结构上几乎一模一样,都有名字空间、类等等,是完全的面向对象的代码结构。这样的结构,大大减小了网页设计与一般Win Form程序设计的差异,它们的设计过程都可以概括成以下模式: 将控件拖入页面,修改属性及ID。 添加控件的事件处理

15、方法,修改各控件的属性表现,完成功能并显示结果。上面用的是Viusal Stdio.NET创建了ASP.NET程序,实现了页面与后台编码的分离。页面与编码分离的另外一种形式称为代码内联。在EditPlus,UltrEdit或记事本中输入下面的代码,另存为Multiply.aspx。 10.1.2 ASP.NET程序结构程序结构【例【例10.3】Multiply.aspx代码内联。void EqualButton_Click(object sender, System.EventArgs e) ResultLabel.Text=(double.Parse(NumberText1.Text)*do

16、uble.Parse (NumberText2.Text).ToString();WebForm1【例【例10.3】 * 从程序看到,相关的标记与C#编写的代码同在一个.aspx文件中。页面的内容存在于中,代码则位于中,也实现页面与编码的分离,结构非常清晰。 10.1.3 ASP.NET的特点的特点除了前面提到了提高程序面向对象程度,减少网页程序设计与窗体程序设计的差异外,采用ASP.NET相对于ASP, 它具有如下主要特点: 功能强大ASP.NET是Microsoft .NET框架的一部分,可以在代码中访问几千个.NET类库,从而具有比ASP更强大的功能。 用户界面与商业逻辑的分离ASP.N

17、ET中,页面文件(用户界面)与程序代码(商业逻辑)分别存于不同的文件中,这样很方便程序的编辑和维护。当商业逻辑发生变化时,只要修改程序代码即可,页面文件保持不变。 提高浏览速度用ASP.NET书写的页面在第一次被访问时会被IIS编译,并在内存中保留编译副本,当以后访问页面时,由于页面已经被编译过,所以,就会直接执行编译过的代码,从而速度为大为改进。当然,由此而造成的“后果”是第一次访问非常慢。 支持多种编程语言以前在网页设计中,大多只能选择Java、VB脚本,还有一些Perl作为编程语言。ASP.NET打破了这种限制。事实上,在ASP.NET中,可以选择C#、C+、VB甚至Delphi、Cob

18、ol等作为程序设计语言。 ASP.NET页面是基于服务器控件构建的Web服务器控件允许使用直观的对象模型来表现和编程,而不再使用HTML元素。10.2 Web Form10.2.1 Web Form基础基础ASP.NET中Web Form指的是一个Web页面,它好像是一个容器,包容了各种控件。有的翻译成Web表单,容易与标记混淆,所以在本书中一般指Web页面。一个页面都是以.aspx为扩展名,如Multiply.aspx。在Web页面中,可以对各种控件建立对应的事件。在上一节中,Button控件的单击Click事件,事件代码则执行两个数的相乘。下面再举个例子。【例【例10.4】ASP.NET事

19、件。void Button1_Click(Object sender, EventArgs e) Message.Text=Hello World!;EventShow.aspx 【例【例10.4】 单击按钮查看消息 【例【例10.4】运行结果如图10.6所示:图图10.6 EventShow运行页面运行页面10.2.2页面事件页面事件在ASP.NET中,除了控件具有事件外,每次ASP.NET页面在运行时,也会触发Page对象的事件。如表10.3所示。表表10.3 page对象的事件对象的事件【例【例10.5】页面事件。/ Page对象的Load事件void Page_Load(Object

20、sender , EventArgs e) Message.Text += 发生Page对象的Load事件;/ Page对象的Init事件void Page_Init(Object sender , EventArgs e)【例【例10.5】 Message.Text += 发生Page对象的Init事件;/ Page对象的PreRender事件void Page_PreRender(Object sender , EventArgs e) Message.Text += 发生Page对象的PreRender事件;/ Page对象的Unload事件void Page_Unload(Object

21、 sender , EventArgs e) Message.Text += 发生Page对象的Unload事件;void Button_Click(Object sender , EventArgs e) Message.Text += 用户单击确定按钮,;【例【例10.5】PageMessage.aspx【例【例10.5】点击“确定”按钮前页面如图10.7所示。 图图10.7 点击确定按钮前页面点击确定按钮前页面【例【例10.5】点击“确定”按钮后页面如图10.8所示:图图10.8 点击确定按钮后页面点击确定按钮后页面10.2.3 IsPostBack属性属性与eb页面紧密联系的还有pag

22、e对象的一个重要属性:IsPostBack。Load事件与IsPostBack属性相结合使用,一般用来检查是不是第一次加载Web页面,在此基础上就可以控制程序的流向。【例【例10.6】IsPostBack属性示例。void Page_Load(Object sender , EventArgs e) if (IsPostBack=true) Label1.Text= IsPostBack等于true,客户端已经发回数据; else Label1.Text= IsPostBack等于false,第一次打开网页;【例【例10.6】PageIsPostBack.aspx 【例【例10.6】点击“确定

23、”按钮前页面如图10.9所示:图图10.9 PageIsPostBack.aspx点击确定按钮后页面点击确定按钮后页面 【例【例10.6】点击“确定”按钮后页面如图10.10所示:图图10.10 PageIsPostBack.aspx点击确定按钮后页面点击确定按钮后页面10.3 HTML控件控件ASP.NET一共有五十多种控件,分成两大类:HTML控件和服务器控件。在每一种普通HTML标记的未尾加上runat=”Server”就成HTML标记的服务器版,因此HTML控件都对应了标准的HTML标记。ASP.NET引入HTML控件的目的就是为了可以将现有的HTML文件简单地转换成ASP.NET的页

24、面。 例如:对应HTML标记的HTML控件HTMLImage用法:HTML控件不再使用NAME属性,而是使用ID属性;Runat表示这是服务器端控件,不再是标准的HTML标记。10.3 HTML控件控件表表10.4 HTML控件与标准的控件与标准的HTML标记的对应关系表标记的对应关系表10.3 HTML控件控件【例【例10.7】Span的使用。/ 用户单击确定按钮的处理事件void Button_Click(object sender, EventArgs e)/利用HTML控件的Value方法,获取用户输入的数据Show1.InnerText = UserName.Value;SpanEx

25、ample.aspx请输入姓名:【例【例10.7】 输入的用户姓名是:按“确定”按钮后页面如图10.11所示:图图10.11 SpanExample.aspx运行页面运行页面10.3 HTML控件控件【例【例10.8】HTML控件举例。/用户单击确定按钮的处理事件void Button_Click(object sender, EventArgs e) / 利用HTML控件的Value方法,获取用户输入的数据Show1.InnerText = UserName.Value;Show2.InnerText = UserPassword.Value;HtmlExample.aspx【例【例10.8

26、】 请输入姓名:请输入密码:用户输入的姓名是:用户输入的密码是:【例【例10.8】运行结果如图10.12所示。图图10.12 HtmlExample.aspx运行页面运行页面10.4 服务器控件服务器控件HTML控件是为了将以前的标准HTML标记快速转换成ASP.NET页面。ASP.NET的服务器控件是全新设计的,是HTML的改进,使得它更精确、功能更强大。服务器控件使用的格式:更简单的写法:asp:是服务器控件的固定写法;TextBox表明使用的是TextBox服务器控件;id是控件的名称;Width和Height指控件显示的宽度和高度;runat表明是在服务器端处理。服务器控件可以分成以下

27、几种: 10.4 服务器控件服务器控件1. 基本服务器控件基本服务器控件可以用基本服务器控件创建标准HTML标记的服务器端版本,以取代HTML控件。基本服务器控件如表10.5所示。表表10.5 基本服务器控件基本服务器控件1. 基本服务器控件基本服务器控件上述控件允许设置字体、颜色、边框和样式等属性,常用的属性如表10.6所示: 表表10.6 基本服务器控件的常用属性基本服务器控件的常用属性10.4 服务器控件服务器控件2. Web验证控件验证控件为了能够验证客户在表单中输入的数据,ASP.NET引入Web验证控件。Web验证控件如表10.7所示。表表10.7 验证控件验证控件10.4 服务器

28、控件服务器控件3. 数据控件数据控件数据控件用于数据的显示,包括DataGrid、DataList、Repeater等控件。4. 复杂控件复杂控件复杂控件包括日历控件Calendar、广告条显示控件AdRotator等。5. 移动控件移动控件移动控件用于移动设备的控件,这些移动设备诸如手机和像Microsoft Pocket PC那样的PDA(Personal Digital Assistant, 个人数字助理)等。10.4 服务器控件服务器控件【例【例10.9】Web验证控件RangeValidator示例。 / 用户单击Button控件的事件处理程序 void Button1_Click(

29、Object sender , EventArgs e)String strA; if (Page.IsValid ) strA = 输入的成绩是: + Text1.Text; Show1.InnerText= strA; else Show1.InnerText = ; Web服务器控件RangeValidator【例【例10.9】输入课程成绩:【例【例10.9】运行结果页面如图10.13所示:图图10.13 RangeValidator的使用的使用10.4 服务器控件服务器控件【例【例10.10】数据控件DataGrid示例。void Page_Load(Object sender , E

30、ventArgs e)/定义数据来源DataSet对象 OleDbConnection OBJConn; OleDbDataAdapter OBJDataAdapter; String MSN=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/ tSQL=Select * From courses;OBJConn = new OleDbConnection(MSN); OBJDataAdapter = new OleDbDataAdapter(tSQL,MSN );DataSet OBJDataSet=new DataSet();【例【例10.10

31、】/将courses表填入DataSet对象 OBJDataAdapter.Fill(OBJDataSet, courses); OBJConn.Close();/设置DataGrid控件的数据来源DataGrid1.DataSource=OBJDataSet;/将DataGRid控件与数据来源连结DataGrid1.DataBind();数据控件示例DataGrid控件使用DataGrid控件显示表【例【例10.10】 运行结果页面如图10.14所示。图图10.14 DataGrid控件显示控件显示Course表表10.4 服务器控件服务器控件数据控件在运行时动态地给控件的属性赋值的过程称为

32、数据绑定。数据绑定允许控件的属性与数据连接,这里的数据指数据库的数据,以及属性、方法、集合等。DataGrid数据控件以表格形式显示绑定数据。例10.10使用DataGrid数据控件显示student.mdb中的courses表记录值。绑定的过程为:(1) 创建DataGrid所需的DataSet对象和数据来源;(2) 设置DataGrid控件的DataSource属性:DataGrid1.DataSource=OBJDataSet;(3) 将DataGrid控件与数据来源绑定:DataGrid1.DataBind()。10.5 Web服务创建与应用服务创建与应用10.5.1 Web服务概述服

33、务概述Internet 正在向下一代 Web 站点快速演进,今天的 Web 站点仅能为浏览器提供用户界面,而下一代可编程 Web 站点直接将企业、应用程序、服务和设备彼此链接。这些可编程 Web 站点将不只是被动访问的站点,而将成为可重用的智能 Web 服务。Web服务是可以通过网络远程访问类的属性和方法。先在IIS或其它Web服务器上部署和发布的一个远程对象实体,浏览器或其它分布式应用的客户端可以通过Web服务接入文件(扩展名.asmx)访问该远程对象的属性和方法。下面就来建立Hello World的Web服务。【例【例10.11】Hello World Web服务。using System

34、;using System.Web.Services;public class HelloWorld : WebService WebMethod public String SayHelloWorld() return Hello World; 10.5.1 Web服务概述服务概述如果文件保存在虚拟目录ASP.NET中,则在浏览器输入地址:http:/localhost/ASP.NET/HelloWorld.asmx。如图10.15所示:图图10.15 HelloWorld Web服务服务 10.5.1 Web服务概述服务概述HelloWorld.asmx向外展现了一个方法:SayHello

35、World。点击SayHelloWorld连接,便可以通过浏览器调用这一方法。如图10.16所示:图图10.16 SayHelloWorld方法调用方法调用10.5.1 Web服务概述服务概述点击调用按钮显示如图10.17所示:图图10.17 SayHelloWorld方法调用结果方法调用结果10.5.1 Web服务概述服务概述在使用Web服务之前,并不要对Web服务文件编译,就像一个ASP.NET页面一样。但是如果不想别人查看你的Web服务的源代码,可以预编译Web服务。将HelloWorld.asmx去掉第一行,创建一个标准的类文件CompiledHelloWorld.cs。【例【例10.

36、12】预编译HelloWorld Web服务using System;using System.Web.Services;public class HelloWorld : WebService WebMethod public String SayHelloWorld() return Hello World; 【例【例10.12】直接用命令行方式将CompiledHelloWorld.cs编译为CompiledHelloWorld.dll:csc /t:library /r:System.dll,System.Web.Services.dll CompiledHelloWorld.cs其中

37、引用了System.dll和System.Web.Services.dll程序集。在ASP.NET目录下再创建一个新目录/bin,将CompiledHelloWorld.dll文件拷贝到/bin目录中。最后建立.asmx文件,引用上面已编译的类。例如:Class特性引用/bin目录中已编译的HelloWorld类。在浏览器地址栏输入http:/localhost/ASP.NET/CompiledHelloWorld.asmx, 得到与未编译HelloWorld Web服务相同的效果。10.5.2 创建简单的创建简单的Web服务服务 【例【例10.13】摄氏温度和华氏温度之间的转换TemperatureService.asmx。using Syst

温馨提示

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

评论

0/150

提交评论