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

下载本文档

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

文档简介

第8章 Web应用程序开发本章要点:什么是Web应用程序Web应用程序的特点ASP.NET效劳器端控件在Web应用程序中访问数据库8.1Web版的“你好,VisualBasic.NET!〞8.1.1 第一个Web应用程序进入开发环境后,建立一个新工程Case8_1,但是这一次与以前不同,要选择建立的是一个“ASP.NETWeb应用程序〞,如图8.1所示。应用程序建立以后,将会看到VisualBasic.NET自动生成了一个叫做WebForm1的窗体,这是一个WebForms窗体,与以前的WindowsForms窗体有许多相似之处,但是由于其运行在Web上的特点,两者并不完全相同。最显著的一点就是它没有明显的边界,这一点很好理解:可以回想一下,平时上网看到的网页也没有如Windows窗体那般明显的边界。另外一个不同点就是在WebForms窗体上只能够放置Web窗体控件。事实上,如果看看工具箱,就会发现工具箱中显示的是如图8.2所示的Web窗体控件页,而没有Windows窗体控件页。8.1.2 在浏览器中执行Web应用程序8.1.3 Web应用程序如何运行由于这是本书的第一个Web应用程序,在这里有必要首先解释一下Web应用程序本身“是什么〞。Web应用程序可以看做是一个或几个协同工作的Web页面,如果是几个页面,它们之间往往会互相传递信息,根据用户的输入做出相应的反响。Case8_1虽然只有一个页面,但是也可以看成是这个页面与它自身传递信息以做出适当的反响。事实上,在运行这个程序期间,计算机“偷偷地〞做了很多事情:〔1〕按F5键,相当于在浏览器中输入“://localhost/Case8_1/WebForm1.aspx〞;〔2〕效劳器接受请求,运行WebForm1.aspx中的程序,把结果返回到浏览器;〔3〕用户单击“SayHello〞按钮,浏览器把请求发回到效劳器;〔4〕效劳器接受请求,再次运行WebForm1.aspx中的程序,把结果返回到浏览器。可以看到,就是这么一个简单的程序,却包含了浏览器与效劳器之间的两次信息来回,这也正是Web应用程序的特点:几乎每一个动作都会引起浏览器与效劳器的通讯,所以比起本地的应用程序来,效率比较低。理解了Web应用程序,可能不会对程序本身有什么疑问,因为它与Windows应用程序太相像了:都是把控件放到窗体上,都是编写事件代码,运行起来也几乎没什么区别。但是,应该意识到,这些外表上的相似性都是WebForms的功绩,是它使我们能够以如此一致的方式创立这两种完全不同的应用程序。在下一个案例中,会对这一切作深入地探讨。8.2ASP.NETASP是近些年来Windows平台上使用最广泛的效劳器端页面语言之一。确实,即使你从没有做过Web编程,那也接触过它——在常去的网站中,就有很多页面带有“asp〞这个扩展名的。ASP的页面嵌入式语言特性,以及它与ActiveX的完美结合都给程序员带来了很大的方便。如果你是一个ASP程序员,或者对ASP有所了解的话,那么理解ASP.NET〔原来叫ASP+〕最快的方法是一句话:“ASP.NET是下一代的ASP,并且是建立在.NET框架上的ASP。〞但是,仅仅这么一句话还是失之偏颇了,因为ASP.NET并不是简单的对原有的ASP的补充和增强,也不是仅仅加上了一些.NET,而是真正从底层重新创立了的ASP。从外表特征来看,ASP.NET与ASP相比至少有两大优点。〔1〕执行速度更快传统的ASP是纯解释型的,也就是说每一次执行时,都要先“阅读〞ASP源代码,然后“翻译〞成可执行码,最后才执行。而ASP.NET是编译执行的,在第一次执行的时候,“阅读〞和“翻译〞的过程还要进行,但是“翻译〞的结果被保存下来,在以后就直接执行了,除非源代码做了改变。〔2〕代码更简洁原本400行的ASP代码完成的功能往往只用20行的ASP.NET代码就可以完成。以上谈到的是一些理论,事实上,上一个案例中已经用到了ASP.NET。WebForms就是ASP.NET的组成局部。为了让你有一个深刻的了解,在这个案例中将重写Web版本的“你好,VisualBasic.NET〞。这一次我们不用集成开发环境,而是用编写ASP的传统方式——使用记事本〔或者其他文本编辑器〕来完成。8.2.1手工编写一个Web应用程序<html><scriptlanguage="VB"runat="server">SubbtnHello_Click(SrcAsObject,eAsEventArgs)txtHello.Text="你好,VisualBasic.NET!"EndSub</script><body><formrunat="server"><asp:textboxid="txtHello"runat="server"/><p><asp:buttontext="SayHello"Onclick="btnHello_Click"runat="server"/></form></body></html>8.2.2 手工运行Web应用程序在上个案例中曾经讲过在浏览器中输入“://localhost/Case8_1/WebForm1.aspx〞可以访问Case8_1的运行结果,这里localhost实际上就是默认网站,它运行在本地机上。IP协议规定IP地址指的就是本机,所以如果要运行这个案例,可以在浏览器中输入“:///Case8_2/Case8_2.aspx〞,当然输入“://localhost/Case8_2/Case8_2.aspx〞同样可以运行,二者是等价的。8.2.3 点评:ASP.NET下面来看看代码,这段代码也许从后面看起来更好一些,我们先看这一段:<formrunat="server"><asp:textboxid="txtHello"runat="server"/><p><asp:buttontext="SayHello"Onclick="btnHello_Click"runat="server"/></form>你可能会注意到两个显眼的“asp:〞标示,这是ASP前缀,用来说明一个ASP.NET控件〔也就是WebForms控件〕。这里的两个控件〔TextBox和Button〕在上个案例中已经介绍过了,事实上集成开发环境的工作就是自动加上这两句话。在后面有“runat=server〞的字样,这说明它们都是效劳器端的控件。简单地说,这些控件是运行在效劳器端的,而且帮助客户与效劳器进行交互。在Button控件中有这样一句:OnClick="btnHello_Click",这是在声明事件处理程序,那么事件处理程序在哪里呢?就在页面的开头局部:<scriptlanguage="VB"runat="server">SubbtnHello_Click(SrcAsObject,eAsEventArgs)txtHello.Text="你好,VisualBasic.NET!"EndSub</script>页面上的所有函数、过程都必须定义在<script>块中,这与传统ASP差不多。如果仅仅看这个过程本身,根本无法分辨出这是一个Windows应用程序中的事件处理程序还是Web应用程序中的事件处理程序。前面已经介绍过,在WebForms的帮助下〔现在可以说是在ASP.NET的帮助下〕,这两者到达了高度的统一。8.3Web窗体控件8.3.1建立Web日历程序建立一个ASP.NETWeb应用程序Case8_3。把一个Calendar控件从“Web窗体〞工具页拖曳到Web窗体上,命名为cldDate,注意现在要更改的是(ID)〕而不是(name)。Calendar控件的默认样式非常单调,但是,在它的“属性〞页中可以看到很多可以更改的属性。8.3.2 运行Web日历程序8.3.3验证控件首先,可以看到,对ListBox的操作与WindowsForms的ListBox根本相同,这里不再赘述。这里最重要的内容是关于Validator〔验证〕,它们是用来验证用户输入的有效性的,ASP.NET一共提供了5种Validator,分别是ReqiredFieldValidator〔验证某个输入是否为空〕,CompareValidator〔将某个输入与既定的值相比较〕,RangeValidator〔看某个输入是否在既定的范围内〕,RegularExpressionValidator〔看某个输入是否满足给定的正那么表达式〕,以及CustomValidator〔用户自定义的验证〕。有了这5种工具,就可以很方便地验证用户输入了。在程序中用到了其中两种,其他的3种在用法上大致相同,都使用ControlToValidate属性来设置要验证的控件,而用其他的属性〔如RangeValidator的Minimum和Maximum〕来设置验证条件。但是同时也应该看到,验证控件不是万能的。在判断某个月份的日期是否有效时,Validator就没方法很好地完成任务,以至于我们要在效劳器端补充验证代码.8.4HTML控件第一个是效率。这一点在后面会讲到,HTML控件根本上就是对HTML语言中的元素的直接对应,与Web窗体控件不同,这些控件在放到页面上以后〔如果不把它们转成效劳器控件的话〕,直接作为HTML元素来处理。换句话说,不必经过编译和运行的过程,从而运行的速度要快得多。所以,如果对一个控件的功能要求很简单的话〔比方,放上一个Label控件,只是为了显示一行不变的字〕,那么可以考虑HTML控件。第二个是对页面的控制。由于HTML控件是直接被作为HTML元素处理,所以它们在运行时显示出的外观与设计时的一模一样。第三个是考虑到向下兼容。Web窗体控件在传统ASP中根本就不存在,所以如果只提供Web窗体控件,那么程序员在把传统ASP代码升级到ASP.NET的时候就要做相当大的改变,而HTML控件减少了这种改变的需要。在这个案例中,我们会使用HTML控件编写一个简单的Web应用程序,从中可以看出虽然HTML控件功能简单,但是只要善用,它也可以工作得很好。8.4.1 用HTML控件设计Web应用程序8.4.2 程序运行8.4.3点评:效劳器控件这个程序确实很简单,但是有些东西值得解释,首先是关于什么是“作为效劳器控件运行〞的问题。前面介绍过HTML控件在不作为效劳器控件运行的时候,就相当于一行普通的HTML语句,效劳器对它不做任何处理,而是原原本本地把它送到浏览器中去。事实上,如果查看程序窗体的HTML代码,会看到有这样一行:<DIVstyle="DISPLAY:inline;Z-INDEX:101;LEFT:240px;WIDTH:208px;POSITION:absolute;TOP:108px;HEIGHT:21px"ms_positioning="FlowLayout">请输入你的名字</DIV>这就是那个永远不变的Label控件,效劳器根本不把它作为什么“控件〞,而是作为一行文字来看待,所以它没有自己的行为,也没有除了HTML元素定义之外的属性。而如果把HTML控件作为效劳器控件运行,效劳器就将对它进行处理,这就是为什么一定要把一个控件转成效劳器控件才能控制它的行为。在HTML代码中,TextField控件和Button控件是这样存在的:<INPUTid="txtName"style="Z-INDEX:102;LEFT:240px;WIDTH:126px;POSITION:absolute;TOP:149px;HEIGHT:25px"type="text"size="15"runat="server"><INPUTid="btnSayHello"style="Z-INDEX:103;LEFT:239px;WIDTH:94px;POSITION:absolute;TOP:195px;HEIGHT:26px"type="button"value="Button"runat="server">注意后面的“runat="server"〞字样,这标志着它们是效劳器控件。而相应的,在代码文件中,也会看到对它们的定义: ProtectedWithEventstxtNameAs ProtectedWithEventsbtnSayHelloAs8.5访问数据库前面已经学过了使用VisualBasic.NET开发基于窗口的数据库应用程序,有了ADO.NET的帮助,这个过程确实简单。而在Web应用程序中,这种简单的特性一点也没有变,这个案例就演示如何开发基于Web的数据库应用程序。事实上,由于编程模型的统一性,基于Web的数据库应用程序和基于窗口的数据库应用程序在开发过程上没有太多不同,所以这个案例只是作为一个引子,演示出了一种最简单的情况,即在浏览器中显示一个表。在学习了这个案例之后,结合第7章学到的知识,就可以开发出更复杂的Web数据库应用程序。当然,应当保证自己的机器上装有SQLServer数据库,或者至少可以访问到SQLServer数据库。8.5.1 Web控件上的数据绑定8.5.2 程序运行8.5.3 Web上的数据库连接关于数据库连接,在第7章已经有详细的介绍,在这里只是简单地把过程提一下。首先是设置连接字符串,并且翻开一个数据库连接: connMain.ConnectionSt

温馨提示

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

评论

0/150

提交评论