第九章Web编程基础本章主要介绍以下内容:l因特网基础概念lHTML语言l使用ASP.NET编程lWeb窗体应用程序l作业§9.3使用ASP.NET进行WEB编程ASP.NET又叫ASP+,是ASP的下一代版本,然而ASP.NET又并非从ASP3.0自然演化而来,而是Microsoft推出的新一代ActiveServerPages脚本语言。在许多方面,ASP.NET与ASP有着本质的不同。ASP.NET完全基于模块与组件,具有更好的可扩展性与可定制性,数据处理方面更是引入了许多激动人心的新技术,正是这些具有革新意义的新特性,让ASP.NET远远超越了ASP,同时也提供给web开发人员更好的灵活性,有效缩短了web应用程序的开发周期。ASP.NET与Windows2000Server/AdvancedServer的完美组合,为中小型乃至企业级的web商业模型提供了一个更为稳定,高效,安全的运行环境。一、ASP.NET的编程特点1、ASP.NET的编译语言ASP.NET是一个已编译的、基于.NET的开发环境。我们可以使用任何与.NET相兼容的语言(包括VisualBasic.NET,C#和Jscript.NET)来创造应用程序。2、ASP.NET高效的页面设计方法ASP.NET可以完美的和WYSIWYGHTML编辑器或其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。3、ASP.NET架构快速创建WebServicesXMLWebservices提供远程访问服务器功能的途径。4、基于.NETFramework的Web开发模型ASP.NET框架中每一个子模型(如Web窗体设计模型、数据访问模型)都可以利用.NETFramework和.NETFramework公共语言运行库的强大功能,使得各个Web开发模型更加强大和完善。二、ASP.NET的工作原理可以将ASP.NET页面简单地看成一般的HTML页面,页面上包含标记有特殊功能的段。ASP.NET模块分析ASPX文件的内容,并将文件内容分解成单独的命令以建立代码的整体结构。完成此工作后,ASP.NET模块将各命令放置到预定义的类中。然后这个类被用来定义一个特殊的ASP.NETPage对象。该对象要完成的任务之一就是生成HTML流,这些HTML流可以返回到IIS,再从IIS返回到客户端。三、使用ASP.NET前的环境设置ASP.NET是WEB应用程序,运行必须依赖WEB服务器。为使本章案例能够正常运行,需要将所使用的计算机设置为一台WEB服务器,因此应安装Microsoft的IIS(InternetInformationServices,Internet信息服务)并进行配置,应该注意的是,VisualStudio.NET的安装应在IIS正确安装之后进行,否则,需重新安装VisualStudio.NET。配置IIS的方法讲解:(1)更改主目录(2)创建与删除虚拟目录(3)启动和停止站点(4)重新启动IIS(5)配置ASP应用程序(6)启用ASP调试【案例9-3】在IIS中创建虚拟目录并通过虚拟目录运行ASP.NET页面方法举例。四、ASP.NET的语法基础下面介绍的ASP.NET基本语法,主要是ASP.NETWeb表单的语法,与ASP.NET程序所采用的编程语言无关。将ASP.NET代码插入到自己的Web页源代码中,需要对其进行标注,以使服务器能将它确认为服务器端代码,使它与HTML代码有所区别。下面我们来介绍ASP.NET的结构语法中的6个常用的语法标记元素:1、代码呈现块语法2、声明代码语法3、WEB服务器控件语法4、HTML服务器控件语法5、数据绑定语法6、服务器端注释语法1、代码呈现块语法格式:%%和%=…%功能:代码呈现块由%…%元素表示,块中的代码由服务器编译执行,并且是在Web窗体页执行的呈现阶段执行。案例讲解:【案例9-4】代码呈现块语法应用举例。2、声明代码语法格式:Script……Runat=server功能:代码声明块用于定义被编译到页面中,并在页面被访问时在Web服务器上被执行的变量和函数。该设置表明处理代码的目标主机是Web服务器。需要注意的是:在ASP中,函数可以在%%块中声明,而在ASP.NET中,所有的函数和全局页变量都必须在scriptrunat=server标记中声明。所以,在%%块内声明的函数将会产生语法编译错误。案例讲解:【案例9-5】声明代码语法应用举例。3、WEB服务器控件语法格式:asp:WEB服务器控件类名id=“”…runat=server…/asp:WEB服务器控件类名功能:自定义WEB服务器控件使页面开发人员能够动态生成HTML用户界面(UI)并响应客户端请求。这些控件在文件内用基于标记的声明语法表示。这些标记不同于其他标记,它们包含了“runat=server”属性。例如,若在ASP.NET页面中动态生成“按钮”,可使用asp:BUTTONid=“BTN1”………runat=server/来定义按钮类服务器控件,通过添加ID为“BTN1”的标记,在运行时创建BUTTON控件的实例。然后可用同一名称访问此控件,下面的代码行将用来设置此控件的Text属性:BTN1.TEXT=”请单击”。案例讲解:【案例9-6】WEB服务器控件语法应用举例。4、HTML服务器控件语法HTML服务器控件使WEB页开发人员能够以编程方式操作页面内的HTML元素。HTML服务器端控件标记因“runat=server”属性而不同于客户端HTML元素。默认情况下,ASP.NET文件中的HTML元素被视为文本,并且页面开发人员不能以编程方式访问。若要使这些元素能够以编程方式访问,可以通过添加runat=“server”属性,指示应将HTML元素作为服务器控件分析和处理。唯一的id属性允许以编程方式引用该控件。属性用于声明服务器控件实例上的属性参数和事件绑定。HTML服务器控件必须驻留在具有runat=“server”属性的form标记包含中。案例讲解:【案例9-7】HTML服务器控件语法应用举例。5、数据绑定语法格式:%#%功能:ASP.NET中内置的数据绑定支持使页面开发人员能够以分层方式将控件属性绑定到数据容器值。位于%#%代码块中的代码只有在调用其父控件容器的DataBind方法时才执行。案例讲解:【案例9-8】数据绑定语法应用举例。6、服务器端注释语法格式:%--注释--%功能:服务器端注释使页开发人员能够防止服务器代码(包括服务器控件)和静态内容执行或呈现。案例讲解:【案例9-9】服务器端注释语法应用举例。总结:通过以上案例,我们可以看到ASP.NET页面具有以下一些特征:(1)ASPX文件中的脚本标记%和%表示位于这之间的内容是由服务器执行的VisualBasic代码,以及由ScriptLanguage=“VB”Runat=Server标记的内容将由服务器处理。文件中的其他任何内容,如标准的HTML文本,将由服务器直接返回给客户浏览器。(2)在ASP.NET中包含几个内建的对象,可以用来操纵Web页面的内容。在上面的例子中,Response.Write方法用来将HTML字符串返回给客户浏览器。客户浏览器无法察看服务器端的代码。如果在浏览器中选择“查看源代码”,只能看到由服务器生成的HTML内容,看不到ASP.NET代码本身。五、使用ASP.NET中的内建类下面我们将介绍一些ASP.NET常用的内嵌对象的使用方法,内嵌对象不同于正常的对象。在利用内嵌对象的脚本中,你不需要首先创建一个它的实例,在整个网站应用中,内嵌对象的所有方法、集合以及属性都是自动可访问的。这些常用的内嵌对象如下:1、Response对象每次当客户从Web服务器请求一个页面时,Web服务器就发送一个响应。Response对象是HttpResponse类的一个实例,它被用来管理服务器返回给客户的响应。该对象的一个最常见的应用方式就是使用Write方法将变量的内容或其他HTML代码返回给客户。2、Request对象Request对象主要的功能是从客户端得到数据,常用的3种取得数据的方法是Request.Form、Request.QueryString、Request,第3种是前两种的一个缩写,可以取代前两种情况。而前两种主要对应的是Form提交时的两种不同的提交方法,分别是Post方法和Get方法。Request对象和Response对象是Page类中包含的对象,因此可以直接在ASP.NET的aspxWEB页中使用,而不需要做任何的宣告3、Session对象Session对象被用来存储一个普通用户其滞留期间的信息。当一个用户第一次到达网站时,系统为其分配一个Session,可以使用Session对象存储特定的用户会话所需的信息,其中的会话变量用于记录针对用户的数据并保存在WEB服务器上,可以从服务器端访问代码。当用户在应用程序的页之间跳转时,存储在Session对象中的变量不会清除,而用户在应用程序中访问页时,这些变量始终存在,只有当用户关闭浏览器或会话空闲时间超过了Session.timeout属性中指定的时间或代码调用Session.abandon方法时,信息才被清除。Session可以用来储存访问者的一些喜好;例如,访问者是喜好绿色背景还是蓝色,访问者是否更愿意浏览纯文本的站点,这些信息可以依据Session来跟踪。Session还可以创建虚拟购物篮。无论什么时候用户在网站中选择了一种产品,那么这种产品就会进入购物篮,当用户准备离开时,就可以立即对以上所有选择的产品进行订购,这些购物信息会被保存在Session中。4、Application对象Application对象被用来存储一个应用中所有用户共享的信息。例如,你可以利用Application对象在你的站点的不同用户间传递信息。Application对象是一个非常重要的对象,理解该对象的关键是,所有的用户公用一个Application对象,当网站服务器开启,就创建了Application对象,所有的用户都可以对Application进行修改。利用Application这一特性,可以方便地创建聊天室和网站计数器等常用网页应用程序。一个Application就是在硬盘上的一组主页以及ASPX文件,当一个ASP.NET加入了一个Application,那么它就拥有了作为单独主页所无法拥有的属性。数据可以在Application内部共享,因此可以覆盖多个用户;一个Application包含的事件可以触发某些Application脚本;一个对象的例子可以被整个Application共享;个别的Application可以用InternetServiceManager设置而获得不同属性;单独的Application可以隔离出来,在它们自己的内存中运行,这就是说,如果一个人的Application遭到破坏,不会影响其他人。5、Server对象Server对象是VBScript程序建立ActiveX对象的源头,Server对象使我们可以在服务器上启动ActiveX。Server对象提供对服务器上的方法和属性进行的访问,最常用的方法是创建ActiveX组件的实例(Server.CreateObject),其他方法用于将URL或HTML编码成字符串(Server.htmlencode),将WEB服务器上指定的虚拟路径映射到物理路径(Server.mappath)以及设置脚本的超时期限。下面我们通过案例详细讲解ASP.NET常用的内嵌对象的使用方法。案例讲解【案例9-10】使用Request对象,从客户端HTML表单“获取”数据;并使用Response对象将信息显示到客户端浏览器的应用举例。说明:(1)本例没有像以往的例子一样将HTML语句同ASP.NET代码混合编写,而是分别存为两个文件(一个HTML文件,一个ASPX文件)。执行LOGIN.HT