B/S结构程序设计
被考次数: 9次
被考频率: 中频率
答错率:    41%
知识难度:
考试要求: 了解     
知识路径:  > 电子商务系统程序设计基础  > 电子商务系统建设


本知识点历年真题试卷分布
>> 试题列表    
 

 
       Web编程技术概述
       Web编程技术能够实现B/S结构的程序,本节介绍几种常见的Web编程技术。
          JSP(JavaServer Pages)
          JSP也是一种动态网页设计技术,以Java语言作为脚本语言。Web服务器在遇到访问JSP网页的请求时,首先将JSP页面编译成对应的Servlet,然后执行该Servlet,将执行结果以HTML格式返回给客户。JSP可以跨平台、跨服务器运行,且将内容与外观分离。
          J2EE/JavaEE
          Sun公司为企业级应用推出的标准平台,包括三个版本:JavaEE、JavaSE、JavaME。
          PHP(Hypertext Preprocessor)
          PHP是一种开源工具,主要用于服务器端应用程序及动态网页上,适合开发轻量级Web应用系统。
          ASP.NET
          ASP.NET是一种易于编程开发、运行效率高的Web编程技术,关于它的详细介绍将是本章的重点内容。
       ASP.NET概述
       ASP.NET是微软.NET体系结构的一部分,是创建动态网页的一种服务器端技术。ASP.NET语法上兼容ASP,可以采用面向对象程序设计模式,可以使用多种语言(包括Microsoft Visual Basic.NET、Microsoft Visual C#和Microsoft JScript.NET)开发。在ASP技术中,将脚本语言代码嵌入网页中,解释执行,而在ASP.NET中,实现了代码分离,即将HTML页面代码与服务器代码分离在不同的文件中,服务器代码可以编译执行,实现一次编译,多次执行的特点。
          ASP.NET的特点
          (1)新的运行环境,方便设置断点,易于调试。
          (2)丰富的控件库。.NET提供了80多种控件,采用控件+事件驱动方式的编码,可以提高编程效率。
          (3)多语言支持。
          (4)性能高效。ASP.NET程序相对于ASP程序而言,程序的执行效率、代码安全性等方面都有了很大的提高。
          (5)安全。ASP.NET为Web应用程序提供了默认的授权和身份验证方案,开发人员可以根据应用程序的需要设置Web应用程序的权限及身份认证等。
          (6)页面缓存技术。根据应用程序的需要,ASP.NET可以缓存页数据、页的一部分或整个页。
          (7)支持多种平台。ASP.NET支持任何设备上的任何浏览器。
          (8)与现有ASP应用程序的兼容性。ASP和ASP.NET可并行运行在IIS Web服务器上而互不冲突。ASP.NET仅处理具有.aspx文件扩展名的文件。具有.asp文件扩展名的文件继续由ASP引擎来处理。
          创建ASP.NET应用程序
          1)创建ASP.NET项目
          2)解决方案组成
          解决方案资源管理器中包含了该程序的所有资源文件,例9-1项目的解决方案资源管理器如下图所示,包含以下内容:
          
          解决方案组成
          ①Properties文件夹中的AssemblyInfo.cs文件:主要用来设置有关程序集常规信息的一些参数,例如:公司信息、版权、版本等。
          ②引用:该项目需要引用的资源。
          ③Default网页:页面文件,对应的还有页面的类代码文件。一个ASP.NET项目中可以有多个网页文件,一般Default也为默认页。
          ④Web.Config:站点配置文件,可以设置一些网站的整体规则等。
          ASP.NET的网页代码模型
          ASP.NET网页一般由三部分组成:
          ①ASPX文件:包括HTML标记、服务器控件、脚本代码等。
          ②CS文件:包括事件处理程序和代码。
          ③designer.cs文件:用来为页面的控件做初始化工作,一般只有ASP.NET应用程序(Web Application)才有designer.cs文件。
          ASP.NET页面一般都是代码隐藏页模型,代码隐藏页模型将事件处理程序及其他服务器脚本程序都存放在cs文件中,而不嵌入在aspx网页文件中,当ASP.NET网页运行的时候,先处理cs文件中的代码,再处理.aspx页面中的代码。这种模式被称为代码分离。
          代码分离将页面的HTML代码与动态的服务器代码放在不同的文件中,使得网页设计人员也可以单独设计静态样式页面,而程序员可以独立设计服务器代码,二者基本没有影响。另外,代码分离使得程序的调试和运行结构清晰。在代码分离模型的aspx文件第一行程序代码如下:
          
          其中,CodeFile=“Default.aspx.cs”,说明该文件对应的服务器代码被定义在.aspx.cs类文件中。可以通过事件的方式将对应的程序代码写在.aspx.cs文件中,当然,也可编写其他符合C#语言的代码。
          页面文件的第一行是一条page页面指令,ASP.NET页面支持多个页面指令,页面指令用来通知编译器在编译页面时做出的特殊处理,如缓存、使用命名空间等。当需要执行页面指令时,通常的做法是将页面指令包括在文件的头部,常用的页面指令如下:
          .@Page:定义ASP.NET页(.aspx文件)的属性。
          .@Control:定义ASP.NET用户控件(.ascx文件)的属性。
          .@Import:将命名空间导入到页中。
          .@Implements:实现指定的.NET Framework接口。
          .@Output Cache:输出缓存策略。
          .@Assembly:在编译过程中将程序集链接到当前页,以使程序集的所有类和接口都可用在该页上。
          .@Register:注册用户控件,为用户控件定义前缀。
          ASP.NET页面生命周期
          一个获取ASP.NET网页的请求(通过用户提交或通过超链接完成的)被发送到Web服务器后,页面生命周期就开始了,在生命周期内,该页面将执行一系列的步骤,包括控件的初始化,控件的实例化,还原状态和维护状态以及通过IIS反馈给用户呈现成HTML。ASP.NET生命周期通常情况需要经历如下几个阶段。
          .页请求:页请求发生在页生命周期开始之前。用户请求页时,ASP.NET将确定是否需要分析和编译页(从而开始页的生命周期),或者是否可以在不运行页的情况下发送页的缓存版本以进行响应。
          .开始:发生了请求后,页面就进入了开始阶段。在该阶段,页面将确定请求是回发请求还是新的客户端请求,并设置IsPostBack属性。
          .初始化:在页面开始后,进入了初始化阶段。初始化期间,页面可以使用服务器控件,并为每个服务器控件进行初始化。
          .加载:如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。
          .验证:调用所有验证程序控件的Vailidate方法,来设置各个验证程序控件和页的属性。
          .回发事件:如果是回发请求,则调用所有事件处理的程序。
          .呈现:在呈现期间,视图状态被保存并呈现到页。
          .卸载:完全呈现页面后,将页面发送到客户端并准备丢弃时,将调用卸载。此时,将卸载页属性(如Response对象和Request对象)并执行清理。
          ASP.NET页面生命周期中的事件
          在ASP.NET页面生命周期各阶段中,页面将会引发多种事件。对于控件产生的事件,是通过用户的操作来引发的。而ASP.NET内置的事件如Page_Load、Page_Init等事件,是页面执行过程中自动引发的,下面按照事件发生的顺序介绍常见的ASP.NET内置事件。
          (1)页面预初始化事件PreInit。PreInit事件是由Page引发,发生在页面初始化之前。在这个事件发生时,可以检查IsPostBack属性来确定是不是第一次处理该页,创建或重新创建动态控件,读取或设置配置文件属性值。
          (2)页面初始化事件Init。在所有控件都已初始化且已应用所有外观设置后引发。使用该事件来读取或初始化控件属性。
          (3)页面预加载事件PreLoad。发生在页面加载事件之前。在Page引发该事件后,它会为自身和所有控件加载视图状态,然后会处理Request实例包括的所有回发数据。
          (4)页面加载事件Load。Load事件是在页面加载的时候引发的。在Load事件中,使用页面的IsPostBack属性来判断页面是回传加载还是首次加载,回传加载IsPostBack属性为true,否则为false。
          (5)页面卸载事件Unload。该事件发生在页面被卸载时,可以通过Unload事件用来执行页面卸载时的清除工作,如关闭文件或数据库连接、完成日志记录或者其他的程序请求。
       ASP.NET控件
          ASP.NET控件概述
          ASP.NET程序开发的高效性,一个重要的原因就是.NET提供了丰富的控件,这些控件能够实现交互复杂的Web应用功能。控件支持拖曳、可视化设计等。ASP.NET控件包括HTML控件、服务器控件,而且还支持AJAX及第三方的控件,本节主要介绍服务器控件。
          标准服务器控件
             Label控件
             Label控件用于在页面上显示文本且不能被用户更改。添加Label控件可以从VS工具箱中将标签控件拖放到页面中,拖放到页面后,该页面将自动生成一段标签控件的声明代码:
             
             该程序声明了一个标签控件,其中,ID="Label1"表示控件的ID值为Label1,runat="server"表示该控件运行在服务器端,Text="标签"表示Label控件显示文本为“标签”。Label控件的ID属性及Text属性都可以改变,也可以通过服务端程序设置Label控件的Text属性,程序如下所示:
             
             Label控件的其他常见属性:
             .ForeColor属性:文字颜色;
             .Visible属性:是否可见。
             TextBox控件
             TextBox控件在页面上显示一个可编辑的文本框,例如用户注册、登录等,就需要文本框控件来接受用户输入的信息。
             文本框控件的常用属性:
             .AutoPostBack:在文本修改以后,是否自动提交;
             .MaxLength:用户输入的最大字符数;
             .ReadOnly:是否为只读;
             .Rows:作为多行文本框时所显式的行数;
             .TextMode:文本框的模式,分为三种:
             SingleLine:指示为单行输入,默认模式;
             MultiLine:指示为多行输入;
             Password:密码输入方式。
             Button控件
             Button控件在页面上显示一个按钮,按钮控件能够触发事件,或者将网页中的信息回传给服务器。在ASP.NET中,包含三类按钮控件,分别为Button、LinkButton、ImageButton。
             按钮控件的常用属性:
             .Text:按钮的显示文本;
             .Causes Validation:按钮是否导致激发验证检查;
             .CommandArgument:与此按钮管理的命令参数;
             .CommandName:与此按钮关联的命令。
             这三种按钮,它们起到的作用基本相同,主要区别是表现形式不同。
             按钮的常用事件:
             ①Click单击事件。在Click单击事件中,通常用于编写用户单击按钮时所需要执行程序。在页面设计视图中,双击按钮即可打开Click事件对应的方法,也可以在按钮的事件视图中打开Click事件对应的方法,在方法体中直接编写程序内容即可在页面运行时单击按钮执行这些代码。
             ②Command命令事件。按钮的Command事件可以传递参数,负责传递参数的属性是上面介绍的CommandArgument和CommandName属性。
             Image控件
             Image控件用来在Web页面中显示图像,常用的属性如下:
             .AlternateText:在图像无法显式时显示的备用文本;
             .ImageAlign:图像的对齐方式;
             .ImageUrl:要显示图像的URL。
             HyperLink控件
             HyperLink控件在页面显示一个超链接,相当于实现了HTML代码中的“”效果,但HyperLink控件是服务器控件,所以可以在程序中改变控件的链接URL,使其链接到不同的URL。超链接控件通常使用的两个属性如下所示:
             .ImageUrl:要显示图像的URL;
             .NavigateUrl:要跳转的URL。
             提示:如果只实现静态的超链接,使用HTML的标签效率比较高。
             DropDownList控件
             DropDownList控件是一个下拉列表选项控件,其中包含多个选项,用户根据需要选中其中某一项。例如,在输入性别时就可以使用DropDownList控件,控件包含两个选项“男”和“女”,该控件的使用避免了用户输入麻烦及输入错误。
             DropDownList控件的常用属性:
             .Items:选项集,可以直接在属性框中设置,也可以通过程序动态设置;
             .Text:选中项的文本;
             .SelectedIndex:选中项索引;
             .SelectedItem:选中项;
             .SelectedValue:选中项的值。
             DropDownList列表控件常用事件:
             .SelectedIndexChanged:该事件在选择项发生变化时引发。
             ListBox控件
             ListBox控件与DropDownList控件相似,也包含多个选项,但ListBox控件可以多项选择。设置SelectionMode属性为Single时,表明只允许用户从列表框中选择一个项目,而当SelectionMode属性的值为Multiple时,用户可以按住Ctrl键或者使用Shift组合键从列表中选择多个选项。
             ListBox控件的常用属性及事件与DropDownList控件基本相同,另外还有一个Rows属性,表示要显示的选项的行数。
             CheckBox控件和CheckBoxList控件
             ASP.NET提供了复选框控件和复选组控件来实现多选。复选框控件和复选组控件都是通过Checked属性来判断是否被选择。
             (1)复选框控件(CheckBox)。
             CheckBox控件常用属性:
             .Text:复选框显示文本;
             .Checked:复选框是否被选中。
             CheckBox控件常用事件:
             .CheckedChanged:选中状态发生变化时触发。
             (2)复选组控件(CheckBoxList)。
             CheckBoxList控件常用属性:
             .Items:复选组所包含的项。
             CheckBoxList控件常用事件:
             .SelectedIndexChanged:当控件中某项的选中状态被改变时,则会触发该事件。
             复选组控件通过Items集合来获取、选择某个或多个选中的项目值。
             RadioButton控件和RadioButtonList控件
             (1)单选控件(RadioButton)。
             单选控件可以为用户选择某一个选项,单选控件常用属性:
             .Checked:控件是否被选中;
             .GroupName:单选控件所处的组名,同一组中的RadioButton只能选一个;
             .TextAlign:文本标签相对于控件的对齐方式。
             单选控件常用的事件:
             .CheckedChanged:当控件的选中状态改变时,则触发该事件。
             (2)单选组控件(RadioButtonList)。
             与单选控件相同,单选组控件也是只能选择一个选项的控件,而与单选控件不同的是,单选组控件没有GroupName属性,但是却能够列出多个单选项目。另外,单选组控件所生成的代码也比单选控件实现的相对较少。
             单选组控件的常用属性如下所示:
             .Items:单选项的集合;
             .RepeatColumn:用于布局项的列数;
             .RepeatDirection:项的布局方向;
             .RepeatLayout:是否在某个表或者流中重复。
             RadioButtonList控件常用事件如下:
             .SelectedIndexChanged:当控件中某项的选中状态被改变时,则会触发该事件。
             日历控件(Calender)
             日历控件可以显示一个日历,用户能够通过日历控件进行时间的选取。通过设置日历控件的属性,可以更改日历控件的外观。日历控件的常用属性如下:
             .DayHeaderStyle:月历中显示一周中每一天的名称和部分的样式;
             .DayStyle:所显示的月份中各天的样式;
             .NextPrevStyle:标题栏左右两端的月导航所在部分的样式;
             .OtherMonthDayStyle:上一个月和下一个月的样式;
             .SelectedDayStyle:选定日期的样式;
             .ShowDayHeader:显示或隐藏一周中的每一天的标头;
             .ShowGridLines:显示或隐藏一个月中的每一天之间的网格线;
             .ShowNextPrevMonth:显示或隐藏到下一个月或上一个月的导航控件;
             .ShowTitle:显示或隐藏标题部分;
             .TitleStyle:位于日历顶部,包含月份名称和月导航连接的标题栏样式;
             .TodayDayStyle:当前日期的样式;
             .WeekendDayStyle:周末日期的样式。
             通过上述属性可以设置日历控件的样式,Visual Studio还为开发人员提供了默认的日历样式,可以选择自动套用格式进行样式设置。
             日历控件常用事件:
             .DayRender:当日期被显示时触发该事件;
             .SelectionChanged:当用户选择日期时触发该事件;
             .VisibleMonthChanged:当所显示的月份被更改时触发该事件。
          验证控件
          在浏览运行网页时,经常会遇到用户登录、用户注册等情况,这时,有一些内容是必填项,例如用户名和密码等,这通常先要做有效性验证,再执行相应的程序。在ASP.NET中,可以使用验证控件在客户端浏览器页面上进行验证,只有验证通过的才可以被发送到服务器。ASP.NET中包含多种验证控件,其层次结构如下图所示。
          
          ASP.NET中验证控件层次结构
             RequiredFieldValidator控件
             RequiredFieldValidator验证控件为非空验证,在进行验证时,RequiredFieldValidator控件必须绑定一个要验证服务器控件。
             RequiredFieldValidator控件的常用属性如下表所示。
             
             RequiredFieldValidator控件的常用属性
             CompareValidator控件
             CompareValidator用于比较控件的值,例如,注册时,密码需要输入两次,并且一致;付款时,金额需大于0等情况。
             CompareValidator控件的常用属性如下表所示。
             
             CompareValidator控件的常用属性
             RangeValidator控件
             RangeValidator控件可以检查用户的输入是否在指定的上限与下限之间。通常情况下用于检查数字、日期、货币等。范围验证控件的常用属性如下表所示。
             
             RangeValidator控件的常用属性
             RegularExpressionValidator控件
             在上述控件中,虽然能够实现一些验证,但是验证的能力是有限的,一般只能验证非空、是否是数字或者满足一定范围等。正则验证控件(RegularExpressionValidator)可以进行复杂的验证,它用于确定输入的控件的值是否与某个正则表达式所定义的模式相匹配,如电子邮件、电话号码及身份证号码等。
             RegularExpressionValidator控件的常用属性是ValidationExpression,它用来指定用于验证的正则表达式。
             CustomValidator控件
             CustomValidator控件为自定义验证,可以手写JS脚本进行客户端验证,也可以编写服务器端的验证事件,或者联合两种方式验证。
             CustomValidator控件的常用属性为ClientValidationFunction,用于客户端验证的函数。
             CustomValidator控件的常用事件为ServerValidate,表示服务器端验证的事件。
             ValidationSummary控件
             ValidationSummary验证组控件能够对同一页面的多个控件进行验证。同时,验证组控件通过ErrorMessage属性为页面上的每个验证控件显示错误信息,其常用属性如下表所示。
             
             ValidationSummary控件的常用属性
       ASP.NET的内置对象
       ASP.NET应用程序运行在服务器端,而在Web应用程序中,通常需要存储客户端的信息,或者在客户端及服务器端传递信息。在ASP.NET中包含了一些类,这些类在页面中可以直接使用,称之为内置对象。使用这些内置对象可以在页面之间传递参数,保存页面内的状态等。
       在ASP.NET中,内置对象包括Page、Response、Request、Application等。
          Page对象
          Page对象对应于.aspx文件。ASP.NET网页在执行时将自动生成Page对象,此对象无需特别指定名称,其保留名称为Page。
             Page对象的主要用途。
             .提供网页开始或已经下载后自动触发的事件,供程序设计者编写事件处理程序。
             .提取浏览器提交的内容,或者输出信息给浏览器。
             .设定是否保持Web Form中各控件最近的状态。
             .进行与数据绑定有关的操作。
             Page对象的常用属性。
             .Controls:获取ControlCollection对象,该对象并不包含页面内的所有控件,它只显示Page类的直接子控件,而不再显示这些子控件的子控件。
             .IsPostBack:该属性返回一个布尔值,true表示当前网页是由于客户端返回数据而加载的,false表示首次加载而非回传。
             .IsValid:该属性获取一个布尔值。true表示网页上的验证控件全部验证成功,false表示至少有一个验证控件验证失败。
             .EnableViewState:设置是否启用Web Form的状态保持功能,该属性的默认值为ture。
             Page对象的常用方法。
             .DataBind:将数据源绑定到被调用的服务器控件及子控件。
             .FindControl(id):查找指定id的服务器控件,如果存在,则返回该控件,否则为null。
             .RegisterClientScriptBlock:向客户端发送脚本块。
             .Validate:指示页面中的验证控件进行验证。
             Page对象的常用事件。
             在ASP.NET网页开始载入到被完全写入浏览器的过程中,产生的与Page对象有关的主要事件有Init、Load和UnLoad等三个。
             ①Init:当服务器控件初始化时发生。
             ②Load:当服务器控件加载到Page时发生。
             ③UnLoad:当服务器控件从内存中卸载时发生。
             这些事件触发顺序如下图所示。
             
             Page对象的常用事件触发顺序
          Request传递请求对象
          Request对象主要用于获取来自客户端的数据,如用户填入表单的数据、保存在客户端的Cookie等。
             Request对象常用的属性
             (1)QueryString:获取通过URL路径传来的数据。
             在ASP.NET中,页面跳转时需要在页面间传递参数,可以将参数写在URL中,并通过QueryString属性是用来获取URL字符串变量的集合。QueryString主要用于收集http协议中get请求发送的数据,如果在一个请求事件中被请求的URL地址出现了“?”形式的参数传递,则表示此次请求方式为get,该方式能够传递256字节的数据。
             例如在用户登录成功后需要将用户名传递给管理页面,假设登录页面为Login.aspx、管理页面为Manager.aspx,可以按照如下方式实现。
             ①在登录页的类文件中,如果登录成功,编写如下代码:
             
             该语句表示登录成功页面跳转到Manager.aspx,并且通过URL传递一个参数username,值为变量username(程序中保存用户名的变量)中的值。
             ②在Manager.aspx页的类文件的Page_Load事件方法中,编写如下代码:
             
             上述代码使用Request的QueryString属性来获取传递的URL参数username的值。在URL中也可以包含多个参数,中间用“&”隔开。
             (2)Form:获取通过表单提交传输的数据。
             在通过QueryString获取URL参数时,只能获取get方式传递的值、传递值的大小有限、且参数值显示在了URL中(不安全)。另一种传递方式为post,可传递较大内容,且传输的数据加密、不在URL中显示。表单就是这样一种形式,可以使用Request的Form获取使用post方式传递的参数,形式为:Request. Form["参数名"]。
             (3)Params:获取get方式或post方式传递的参数。
             (4)UserHostAddress:获取远程客户端主机的IP地址。
             (5)Browser:获取有关正在请求的客户端的浏览器功能的信息。
             (6)Path:获取当前请求的虚拟路径。
             (7)ContentLength:指定客户端发送数据的长度(以字节为单位)。
             (8)FilePath:获取当前请求的虚拟路径。
             (9)Headers:获取HTTP头集合。
             (10)HTTPMethod:获取HTTP传输方式(get还是post)。
             Request对象有两个常用方法
             .MapPath(VirtualPath):该方法将请求中的URL虚拟路径转换成服务器的物理路径。
             .SaveAs(fileName,includeHeaders):该方法将客户端的Http请求保存在磁盘,参数fileName表示服务器的保存位置,参数includeHeaders表示是否同时保存Http头。
          Response请求响应对象
          Response对象主要用于生成HTML内容并送交浏览器。
             Response对象的常用属性
             .BufferOutput:获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个页面之后将其发送。
             .Cache:获取Web页面的缓存策略。
             .Charset:获取或设置输出流的HTTP字符集类型。
             .IsClientConnected:获取一个值,通过该值指示客户端是否仍连接在服务器上。
             .ContentEncoding:获取或设置输出流的HTTP字符集。
             .TrySkipIisCustomErrors:获取或设置一个值,指定是否支持IIS 7.0自定义错误输出。
             Response对象的常用方法
             Response可以输出HTML流到客户端,其中包括发送信息到客户端和客户端URL重定向,不仅如此,Response还可以设置Cookie的值以保存客户端信息。Response的常用方法如下所示:
             .Write:向客户端发送指定的HTTP流。
             .End:停止页面的执行并输出相应的结果。
             .Clear:清除页面缓冲区中的数据。
             .Flush:将页面缓冲区中的数据立即显示。
             .Redirect:客户端浏览器的URL地址重定向。
          Application状态对象
          Web站点事实上是一个多用户的应用程序。Application对象是Web应用程序中的一个公共变量,任何一个用户写入其中的信息都可以被其他用户看到。Application对象的生命周期与Web应用程序的生命周期相同,始于Web站点开始运行时,终于站点停止运行时。在此期间,任何一个访问者都可以读取或改写Application对象中的内容。第一个用户访问网站时,将触发Application对象的OnStart事件,而站点服务终止时,将触发Application对象的OnEnd事件。在ASP.NET中,上述两个事件的处理程序应放置在Global.asax中。在Application对象的OnStart事件的处理程序中,通常用Add方法来添加Application变量。在Application对象的OnEnd事件的处理程序中,通常进行释放Application变量的操作。
             Application对象常用的属性
             .AllKey:获取HttpApplicationState集合中的访问键。
             .Count:获取HttpApplicationState集合中的对象数。
             Application对象常用的方法
             .Add:新增一个Application对象变量。
             例如:
             
             若需要使用Application对象,可以通过索引Application对象的变量名进行访问,例如:
             
             .Clear:清除全部的Application对象变量。
             .Get:通过索引关键字或变量名称得到变量的值。
             例如:
             
             .GetKey:通过索引关键字获取变量名称。
             .Lock:锁定全部的Application对象变量。
             .UnLock:解锁全部的Application对象变量。
             Application是网站公共的对象,任何一个用户都可以访问,所以为了防止各用户间访问的冲突,在使用Application对象时可以加锁,使用完再解锁。例如:
             
             .Remove:使用变量名称移除一个Application对象变量。
             .RemoveAll:移除所有的Application对象变量。
             .Set:使用变量名更新一个Application对象变量。
             Application对象常用的事件
             .Start事件:该事件是在Web应用程序启动时发生。
             .End事件:该事件在Web应用程序结束时发生,即Web服务器关闭或重新启动时。
          Session状态对象
          当用户请求一个ASP.NET页面时,系统将自动的建立一个Session(会话),用户退出应用程序或服务器关闭时,会话撤销。Session创建时,系统为Session建立一个标识字符串SessionID,用来管理和跟踪Session,该标识字符串很长,而且具有随机性和唯一性,保证了每个用户Session不会冲突以及Session的安全性。
          Session一般用来存储跨页程序的变量或对象,功能基本同Application对象类似。但Application对象针对整个网站,Session对象变量只针对一个用户,即同一个网站的不同用户的Session对象是不相同的,而且每个用户之间也不能互相访问Session。Application对象终止于IIS服务停止,但是Session对象当网页使用者关闭浏览器或者网页使用者在页面进行的操作时间超时,Session对象将会自动注销。
             Session对象的属性
             .Count:获取Session对象中子对象的数量。
             .IsCookieLess:返回一个布尔值,true表示将SessionID嵌套在URL中,否则存放在Cookies中。
             .IsNewSession:如果用户访问页面时创建新会话,则此属性将返回true,否则返回false 。
             .IsReadOnly:返回一个布尔值,表示Session是否为只读。
             .SessionID:获取SessionID的值。
             .TimeOut:传回或设置Session对象变量的有效时间,如果在有效时间内有没有任何客户端动作,则会自动注销。
             注意:如果不设置TimeOut属性,则系统默认的超时时间为20分钟。
             Session对象的方法
             .Add:创建一个Session对象。
             .Remove:删除会话集合中的项。
             .RemoveAll:删除会话集合中的所有项。
             .RemoveAt(index):删除会话指定索引的项。
             .Abandon:该方法用来结束当前会话并清除对话中的所有信息,如果用户重新访问页面,则可以创建新会话。
             .Clear:此方法将清除全部的Session对象变量,但不结束会话。
             注意:Session对象可以不需要Add方法进行创建,直接使用Session["变量名"]=变量值的形式也可以创建Session对象。
             Session对象常见属性
             .Start事件:在创建Session时发生。
             .End事件:在会话结束时发生。
             注意:当用户关闭浏览器或者退出应用程序时,并不会触发Session_End事件。End事件只有在服务器Web应用程序退出,或者用户调用Abandon方法或者未执行任何操作时间超过了Session设定的TimeOut时才触发。
             Session对象的使用
             ①给Session中写入值的操作如下:
             
             或者
             
             ②修改Session中的数据操作如下:
             
             ③读取Session对象中的数据:
             
             注意:Session["对象名"]返回值是一个Object类型的对象,读取时注意类型的转换。
             Session对象可以使用于安全性较高的场合,如后台登录。在管理员登录后台以后,管理员拥有一定的操作时间,而如果管理员在这段时间不进行任何操作的话,为了保证安全性,后台将自动注销,如果管理员需要再次进行操作,则需要再次登录。在管理员登录时,如果登录成功,则需要给管理员一个Session对象,代码如下:
             
             为了防止非法访问主页index.aspx,在index.aspx.cs文件的Page_Load方法中,可以判断是否已经存在Session对象,如果存在Session对象,则说明管理员当前的权限是正常的,而如果不存在Session对象,则说明当前管理员的权限可能是错误的,或者是非法用户正在访问该页面,代码如下:
             
             当管理员单击注销按钮时,则会注销Session对象并提示再次登录,例如:
             
          Server服务对象
          Server对象是HttpServerUtility的一个实例,该对象提供对服务器上的方法和属性进行访问。
             Server对象的常用属性
             .MachineName:获取远程服务器的名称。
             .ScriptTimeout:获取和设置请求超时时间。
             Server对象的常用方法
             .Execute:使用另一个页面执行当前请求。
             .Transfer:终止当前页面的执行,并为当前请求开始执行新页面。
             .HtmlDecode:对已被编码的消除Html无效字符的字符串进行解码。
             .HtmlEncode:对要在浏览器中显示的字符串进行编码。
             HTML中,诸如“<”等字符是具有特定含义的,如果希望在页面上显示“<”,就必须对字符进行HTML编码在显示,例如:
             
             在使用了HtmlEncode方法后,编码后的HTML标注会被转换成相应的字符,如符号“<”会被转换成字符“<”。在进行解码时,相应的字符会被转换回来,并呈现在客户端浏览器中。
             .MapPath:返回与Web服务器上的执行虚拟路径相对应的物理文件路径。
             .UrlDecode:对URL字符串进行解码。
             .UrlEncode:编码字符串,以便通过URL从Web服务器到客户端浏览器的字符串传输。
             URL地址中不能包括空格、换行符等符号,如果需要使用这些符号,可以使用UrlEncode方法和UrlDecode方法进行变量的编码解码,例如:
             
             在index.aspx.cs文件的Page_Load方法中可以接收该字符串并解码。
             
             重定向到其他网页
             在ASP.NET中,Response.Redirect()和Server.Transfer()都能实现网页重定向。这两个方法的区别在于:
             利用Response.Redirect(),可重定向到已存在的任何网页;而Server.Transfer()只能用于重定向到已存在的位于同一目录或同一目录之下的ASP.NET网页。
             利用Response.Redirect()完成重定向后,浏览器地址栏将显示新网页的URL,而利用Server.Transfer()完成重定向后,浏览器地址栏仍然显示原网页的URL。
             利用Server.Transfer()完成重定向后,原网页中所有内置对象的值仍保留;而利用Response.Redirect()完成重定向后,原网页中所有内置对象的值将不存在。
             就重定向速度而言,Server.Transfer()优于Response. Redirect()。
          Cookie状态对象
          Cookie对象也是保存用户信息的一种对象,但Cookie对象保存在客户端的硬盘中,而Session对象和Application对象保存在服务器端,所以Cookie对象能够长期保存。通过HttpRequest的Cookies集合来进行访问Cookie对象,Cookie的特点如下:
          Cookie对象可以配置过期时间,如果没有配置将在浏览器会话结束后立即到期。
          无需任何服务器资源:Cookie无需任何服务器资源,存储在本地客户端中。
          大多数浏览器支持最大Cookie数据为4K。
          如果客户端浏览器配置禁用Cookie配置,则Web应用中使用的Cookie将被限制,客户端将无法保存Cookie。
          Cookie对象可以存放非敏感的用户信息。现在有很多的软件能够伪装Cookie,这意味着保存在本地的Cookie并不安全,Cookie能够通过程序修改为伪造,这会导致Web应用在认证用户权限时会出现错误。
             Cookie对象的属性
             .Name:获取或设置Cookie的名称。
             .Value:获取或设置Cookie的Value。
             .Expires:获取或设置Cookie的过期的日期和时间。
             .Version:获取或设置Cookie符合HTTP维护状态的版本。
             Cookie对象的方法
             .Add:增加Cookie变量。
             .Clear:清除Cookie集合内的变量。
             .Get:通过变量名称或索引得到Cookie的变量值。
             .Remove:通过Cookie变量名称或索引删除Cookie对象。
             Cookie对象的应用
             (1)创建Cookie对象。通过Add方法能够创建一个Cookie对象,并通过Expires属性设置Cookie对象在客户端中所持续的时间,例如:
             
             (2)获取Cookie对象。Web应用在客户端浏览器创建Cookie对象之后,就可以通过Cookie的方法读取客户端中保存的Cookies信息,例如:
             
             在一些网站或论坛中,经常使用到Cookie,当用户浏览并登录在网站后,如果用户浏览完毕并退出网站时,Web应用可以通过Cookie方法对用户信息进行保存。当用户再次登录时,可以直接获取客户端的Cookie的值而无需用户再次进行登录操作。
       ADO.NET数据库访问技术
       ADO.NET(ActiveX Data Objects.NET)是ASP.NET与数据库的接口,是.NET操作数据库对象的集合。它能够让开发人员更加方便的在应用程序中使用和操作数据。在ADO.NET中,大量的复杂的数据操作的代码被封装起来,当开发人员只需要编写少量的代码即可处理复杂的操作。
          ADO.NET的作用与组成
          ADO.NET是ASP.NET与数据库的接口,其访问数据源的方式如下图所示。
          
          ADO.NET访问数据库方式
          ADO.NET是通过.NET数据库提供程序来访问数据源的。其中:SQL Server.NET数据提供程序用于访问Microsoft SQL Server 7.0或更高版本的数据库,可提供很高的访问效率。OLE DB.NET数据提供程序则用于访问Access、SQL Server 4.5更低版本、DB2、Oracle或其他支持OLE DB驱动程序的数据库。.NET数据提供程序类型如下表所示。
          
          .NET数据提供程序类型
          ADO.NET操作数据库是通过连接数据源、执行数据操作、将数据结果显示在应用程序中等过程完成的,其结构如下图所示。
          
          ADO.NET操作数据库结构图
          ADO.NET的常用对象有连接对象Connection、执行命令对象Command等,各对象及含义如下表所示。
          
          ADO.NET的对象内容
          对于复杂的数据库应用系统而言,经常将数据从数据库服务器中取出,放入本地内存数据库,即DataSet中,若需将数据显示在页面中,则应使用DataView,数据流程如下图所示。
          
          ADO.NET数据流程
          ADO.NET使用过程
          在ADO.NET中对数据库的操作一般需要三个步骤,即创建一个连接、执行命令、关闭连接。使用ADO.NET的对象,不仅能够通过控件绑定数据源,也可以通过程序实现数据源的访问。ADO.NET的规范步骤如下:
          .创建一个连接对象。
          .使用连接对象的Open方法打开连接。
          .创建一个封装SQL命令的对象。
          .调用执行命令的对象。
          .关闭连接。
          连接SQL数据库
          ADO.NET通过Connection对象连接数据库,Connection对象是数据库与应用程序之间的桥梁。
             建立连接
             操作不同的数据库需要不同的对象,在本教材中,主要以SQL Server数据库为例讲解ADO.NET的使用。在数据库的连接中,需要使用.NET提供的SqlConnection对象来对数据库进行连接。该对象包含的主要属性和方法如下表所示。
             
             SqlConnection对象主要属性和方法
             使用SqlConnection对象连接数据库步骤为:
             (1)定义连接字符串。
             在连接数据库前,需要为连接对象设置连接字符串,连接字串基本格式为:
             
             SqlConnection类将会通过此字符串来进行数据库的连接。其中,Data Source是SQL服务器的地址,如果相对于应用程序而言数据库服务器是本地服务器,则配置为(local)即可,如果是远程服务器,则需要填写具体的ip地址;Initial Catalog表示需要访问的数据库名;另外,User ID是数据库登录时的用户名,PWD是数据库登录时使用的密码。
             (2)创建SqlConnection对象。
             创建SqlConnection对象语句如下:
             
             创建SqlConnection对象时,构造方法中的参数connString就是第一步定义的连接字符串。
             (3)打开数据库连接。
             打开数据库连接程序如下:
             
             .NET对于不同类型数据库提供不同的程序,连接对象对于不同的数据库也有不同的类型,如下表所示。
             
             不同类型的连接对象
          DataSet数据集
          如果在操作数据库时,需要大批量的查询、修改数据或者想在断开数据库连接的情况下操作数据,.NET提供了一种方式,可以一次性将数据从数据库服务器中取出,放在本地进行操作,而不用一直保持数据库连接。实现这种机制的是DataAdapter对象和DataSet对象,DataAdapter对象用于从数据库中采集数据,而DataSet是将采集到的数据保存在本地计算机内存中。
          DataSet数据集表示来自一个或多个数据源数据的本地副本,是数据的集合,也可以看作是一个虚拟的数据库。DataSet中可以包含多个DataTable,DataTable的结构与数据库中表的结构相同,也是由若干行和若干列构成的,DataSet能够支持多表、表间关系、数据库约束等,可以模拟一个简单的数据库模型。DataSet的结构如下图所示。
          
          DataSet的结构图
          在DataSet中,主要包括DataTableCollection,DataTable在System.Data中定义,它能够表示存储在内存中的一张表,表包含一个DataColumnCollection的对象,代表数据表的各个列的定义,还包含DataRowCollection对象,代表数据表中的所有的行。
          DataSet对象允许应用程序半独立于数据源运行,因为DataSet从数据源中采集数据后,就会断开与数据源的连接,开发人员可以直接使用和处理这些数据,当数据发生变化并要更新时,则可以使用DataAdapter重新连接并更新数据源。DataAdapter的工作原理如下图所示。
          
          DataAdapter的工作原理
          创建一个DataSet时,可以指定一个数据集的名称,如果不指定名称,则默认被设为"NewDataSet",创建DataSet格式如下:
          
          DataAdapter适配器对象
          DataSet是一个本地数据集,如何将数据库的数据放在DataSet中,.NET中使用Data Adapter对象完成这个任务。DataAdapter对象是数据采集器,可以将数据库中的数据采集后,填充到DataSet中,是数据库与DataSet之间的桥梁。微软针对于不同的数据库提供多种DataAdapter对象,如下表所示。
          
          不同命名空间的DataAdapter对象
          创建SqlDataAdapter对象的过程如下:
          ①创建SqlConnection连接对象;
          ②定义查询SQL语句字符串;
          ③创建SqlDataAdapter对象,形式为:
          
          通过DataAdapter对象的Fill方法,可以将返回的数据以表的形式填充到数据集DataSet中,根据填充的顺序定义每张表的索引,也可以在填充的时候给表命名,例如:
          
          当返回的数据被存放到数据集中后,可以通过循环语句遍历和显示数据集中的信息。当需要显示表中某一行某一字段的值时,可以通过DataSet对象获取相应行的某一列的值,例如:
          
          当需要遍历DataSet时,可以使用DataSet对象中的Count来获取行数,例如:
          
          DataSet不仅可以通过编程的方法来实现显示,也可以使用ASP.NET中提供的控件来绑定数据集并显示。ASP.NET中提供了常用的显示DataSet数据集的控件,包括Repeater、DataList、GridView等数据绑定控件。将DataSet数据集绑定到GridView控件中可以方便地在控件中显示数据库中的数据并实现分页操作,例如:
          
          上述代码就能够将数据集ds中的Table[0]中的数据绑定到GridView控件中。
          DataView数据视图对象
          使用DataView对象可以按照不同的视图显示DataSet中的数据。DataSet中的每一个DataTable都有一个默认的DataView,在例9-6中,绑定显示数据的程序语句:
          
          等价于:
          
          也可以自定义DataView对象,该对象能够设置RowFilter属性(筛选表达式,其值为布尔值)。同时,该对象能够设置Sort属性进行排序,排序表达式可以包括列名或一个算式。
          Command执行对象
          Command对象可以使用数据命令直接与数据源进行通信。通常情况下,Command对象用于数据的操作,例如执行数据的插入和删除,也可以执行数据库结构的更改。使用Command步骤如下:
          ①创建数据库连接;
          ②定义SQL语句;
          ③创建Command对象;
          ④执行命令。
          Command对象的主要属性如下表所示。
          
          Command对象的主要属性
          Command对象的主要方法如下表所示。
          
          Command对象的主要方法
          ExecuteNonQuery方法
          当Command对象指定了一个数据库的数据进行增删改的SQL语句,就可以通过Execute NonQuery方法来执行语句的操作。ExecuteNonQuery不仅可以执行SQL语句,也可以执行存储过程,该方法返回受影响记录的行数。
          DataReader数据访问对象
          DataSet可以提供无连接的数据库副本,DataSet对象在表的生命周期内会为这些表进行内存的分配和维护,但DataSet占用却消耗了较大的本地内存资源。当对数据仅需要进行一些简单的操作时,可以使用DataReader对象。
          DataReader对象可以产生只读,只进的数据流,这些数据流都是从数据库返回的。所以,每次的访问或操作只有一个记录保存在服务器的内存中。相比DataSet而言,DataReader具有较快的访问能力,并且能够使用较少的服务器资源,DataReader具有快速的数据库访问。.NET针对不同类型数据库提供了多种DataReader对象,如下表所示。
          
          各种DataReader对象
          DataReader对象常用属性为HasRows,表示是否存在记录行。
          DataReader对象的常用方法如下表所示。
          
          DataReader对象的常用方法
          使用DataReader检索数据的步骤:
          ①创建和打开数据库连接;
          ②创建Command对象;
          ③调用Command对象的ExecuteReader()方法创建DataReader对象;
          ④使用DataReader的Read()方法逐行读取数据;
          ⑤读取某列的数据,(type)dataReader[],中括号内可以使索引,也可以是列名;
          ⑥关闭DataReader对象。
       数据绑定控件
       ASP.NET中,可以使用ADO.NET对数据库中的数据进行访问查询,而且查询到的数据可以通过数据绑定控件显示在页面上,如GridView、DataList、Repeater等控件都可以实现数据绑定的功能,.NET中数据绑定控件结构如下图所示。
       
       数据绑定控件
          网格视图控件(GridView)
          GridView是ASP.NET中功能非常丰富的数据控件之一,它可以以表格的形式显示数据库的内容并通过数据源控件自动绑定和显示数据。开发人员能够通过配置数据源控件对GridView中的数据进行选择、排序、分页、编辑和删除等操作。GridView控件还能够指定自定义样式,在没有任何数据时可以自定义无数据时的UI样式。
             GridView控件的常用属性
             GridView控件的常用属性如下表所示。
             
             GridView控件的常用属性
             除了上述属性以外,GridView还提供了很多设置GridView样式的属性,例如RowStyle、HeaderStyle等,通过设置这些属性的值可以设置GridView控件的样式。GridView还提供了设置格式的简捷方式,在页面设计视图中GridView的右键菜单中选择“自动套用格式”,在弹出的窗口中可以设置GridView中的样式。
             GridView控件绑定数据
             GridView控件提供两种数据绑定方式,一种则是使用DataSource属性进行数据绑定,这种方法能够将GridView控件绑定到包括ADO.NET数据和数据读取器内的各种对象,该方法在介绍DataSet部分已经介绍;另一种是使用数据源控件进行数据绑定。
             GridView控件的常用事件
             .RowCommand:在GridView控件中单击某个按钮时发生。
             .PageIndexChanging:在单击页导航按钮时发生。
             .PageIndexChanged:在单击页导航按钮后发生。
             .SelectedIndexChanging:在单击GridView控件内某一行的Select按钮(其Command Name属性设置为“Select”的按钮)时发生。
             .SelectedIndexChanged:在单击GridView控件内某一行的Select按钮后发生。
             .Sorting:在单击某个用于对列进行排序的超链接时发生。
             .Sorted:在单击某个用于对列进行排序的超链接后发生。
             .RowDataBound:在GridView控件中的某个行被绑定到一个数据记录时发生。
             .RowCreated:在GridView控件中创建新行时发生。
             .RowDeleting:在单击GridView控件内某一行的Delete按钮(其CommandName属性设置为“Delete”的按钮)时发生。
             .RowDeleted:在单击GridView控件内某一行的Delete按钮后发生。
             .RowEditing:在单击GridView控件内某一行的Edit按钮(其CommandName属性设置为“Edit”的按钮)时发生。
             .RowCancelingEdit:在单击GridView控件内某一行的Cancel按钮(其Command Name属性设置为“Cancel”的按钮)时发生。
             .RowUpdating:在单击GridView控件内某一行的Update按钮(其CommandName属性设置为“Update”的按钮)时发生。
             .RowUpdated:在单击GridView控件内某一行的Update按钮后发生。
             .DataBound:此事件继承自BaseDataBoundControl控件,在GridView控件完成到数据源的绑定后发生。
          重复列表控件(Repeater)
          重复列表控件(Repeater)是一个可重复显示的控件。它能够通过使用模板显示一个数据源的内容,而且这些模板可以自己设计。Repeater控件可以将一段HTML代码或者某些.NET服务器控件进行组合构成一个模板,Repeater控件会根据绑定的数据源中的记录个数重复该模板。Repeater控件支持5种模板,这5种模板的功能如下:
          .AlternatingItemTemplate:交替项模板。
          .ItemTemplate:模板项。
          .HeaderTemplate:标题模板。
          .FooterTemplate:页脚模板。
          .SeparatorTemplate:分隔符模板。
          在上面5种模板中,必须使用的是ItemTemplate模板,其他的模板可以选用。
          数据列表控件(DataList)
          与Repeater控件相似,DataList控件也支持多种类型的模板,通过为DataList指定不同的样式,可以自定义DataList控件的外观。不同的是,Repeater控件只能自定义模板,自行绑定数据,而DataList控件本身自带部分模板,也可以自动绑定数据字段,且属性更丰富,DataList控件常用属性如下:
          .AltermatingItemStyle:编写交替行的样式。
          .EditItemStyle:正在编辑的项的样式。
          .FooterStyle:列表结尾处的脚注的样式。
          .HeaderStyle:列表头部的标头的样式。
          .ItemStyle:单个项的样式。
          .SelectedItemStyle:选定项的样式。
          .SeparatorStyle:各项之间分隔符的样式。
          通过修改DataList控件的相应的属性,能够实现复杂的HTML样式。同GridView一样,DataList控件也可以套用自定义格式实现显示样式。
          DataList控件常见事件如下:
          .ItemCommand:当重复列表控件中有按钮被激发时触发。
          .ItemCreated:创建一项时触发。
          .ItemDataBound:一项被绑定到数据源时触发。
          表单视图控件(FormView)
          FormView控件一次只能显示一条数据,并且提供对数据的分页操作。FormView控件同样支持模板,FormView控件支持的模板如下:
          .ItemTemplate:用于在FormView中呈现一个特殊的记录。
          .HeaderTemplate:用于指定一个可选的页眉行。
          .FooterTemplate:用于指定一个可选的页脚行。
          .EmptyDataTemplate:当FormView的DataSource缺少记录的时候,EmptyData Template将会代替ItemTemplate来生成控件的标记语言。
          .PagerTemplate:如果FormView启用了分页的话,这个模板可以用于自定义分页的界面。
          .EditItemTemplate/InsertItemTemplate:如果FormView支持编辑或插入功能,那么这两种模板可以用于自定义相关的界面。
          FormView控件常用事件除了在Repeater控件中介绍的几种外,还有一些事件,如下所示:
          .ItemCommand:Command命令引发。
          .ItemDeleted:执行Delete命令后引发。
          .ItemDeleting:执行Delete命令前引发。
          .ItemInserted:执行Insert命令后引发。
          .ItemInserting:执行Insert命令前引发。
          .ItemUpdated:执行Update命令后引发。
          .ItemUpdating:执行Update命令前引发。
          .ModeChanged:模式发生变化后引发。
          .ModeChanging:模式发生变化前引发。
          .PageIndexChanged:页索引发生变化后引发。
          .PageIndexChanging:页索引发生变化前引发。
          详细视图控件(DetailsView)
          DetailsView控件与FormView比较类似,DetailsView控件每次也只能够显示一条记录,并且支持对数据源控件中的数据进行插入、删除和更新等操作。但是DetailsView控件与FormView控件不同的是,DetailsView控件不支持ItemTemplate模板,它是以一种表格形式所呈现的。DetailsView控件能够支持Ajax。DetailsView控件可以通过选择是否包括更新,删除等操作,而无需手动的添加相应的事件,如下图所示。
          
          配置DetailsView任务
          当选择了【启用分页】选项后DetailsView控件就能够自动进行分页,还可以配置Pager Settings属性允许自定义DetailsView控件生成分页的外观,它将呈现向前和向后导航的方向控件,PagerSettings属性的常用模式有:
          .NextPrevious:以前一个,下一个形式显示。
          .NextPreviousFirstLast:以前一个,下一个,最前一个,最后一个形式显示。
          .Numeric:以数字形式显示。
          .NumericFirstLast:以数字,最前一个,最后一个形式显示。
          
          DetailsView控件的新建、删除及编辑
          如果在“配置DetailsView任务”时选择了“启用插入”“启用编辑”“启用删除”,则会自动生成新建、编辑、删除等按钮,如上图所示。单击这些按钮时,会触发相应的事件,切换到相应的模式,例如单击编辑按钮后的结果如下图所示。
          
          DetailView控件编辑模式
       WebApp开发
          WebApp概述
          WebApp是指页面应用。它是一种依赖Web浏览器,通过网络访问的应用程序。随着HTML5的快速发展、智能手机的普及,WebApp在手机应用程序的开发上得到了迅猛的发展。
          WebApp与原有的Native App(原生态网络应用)相比,WebApp的优点在于一次性开发跨平台使用,开发成本低,周期短,内容设置限制比较小,用户总能访问到最新版本,无需手动更新需求。不足之处是性能体验有待提高,因为许多操作需要链接到互联网,因此不能离线操作,而且不能充分发挥移动硬件设备的硬件性能,用户体验上还不能完全替代Native App的功能和性能优势。目前,随着WebApp开发技术日趋成熟,其性能正在不断地改进和提升,从长远来看WebApp有着良好的发展前景。
          基于MUI框架WebApp的开发
          目前,比较流行的有Cordova、MUI、PhoneGap、appMobi、WeX5等主流的构建WebApp框架。MUI是一个高性能的HTML5开发框架,从UI界面到执行效率都在极力追求原生体验,是接近Native App体验的高性能前端框架。主要特点为:轻量级别,不依赖任何第三方JS库,压缩后的JS和CSS文件仅有100+K和60+K;原生UI,以iOS平台UI为基础,补充部分Android平台特有的UI控件。
          Hbuilder工具是由DCloud(数字天堂)推出的一款支持HTML5的Web开发IDE,该工具能够快速搭建MUI框架,实现WebApp的开发。下面给出Hbuilder工具开发MUI框架的WebApp的基本流程。
          (1)使用HBuilder新建移动WebApp项目。启动Hbuilder,单击“文件”→“新建”→“项目”,然后选择“5+App”并输入项目名称,就直接搭建完成一个基于MUI的移动App项目。
          (2)配置manifest.json文件。manifest.json是项目的配置文件,包含了要申请的AppID号、App的名称、版本号、首页文件、应用的图标、应用的启动图片以及需要的各种SDK。根据需要可以自行配置。
          (3)生成含MUI的html文件。在新建HTML文件时,选择“含MUI的html”,就可以生成以MUI架构为基础的网页文件,代码如下所示:
          
          这里mui.init()初始化函数,接收一个对象参数,用于进行页面的各种配置,例如子页面的加载、页面预加载等。如下代码,设置手势:
          
          (4)搭建首页HTML布局。首先在body中输入“m”选择mHead,生成头部导航栏,然后在导航栏下面,输入mbody,生成页面的主体部分,其实就是一个div。页面中除了Header和Footer以外的全部内容,必须包含在body中。接着在body中,输入一个个元素,例如添加一个列表mList等。最后为每个元素添加事件,例如添加跳转页面,这里和JSP类似,要调用mui.plusReady(function(){绑定事件})函数,例如一个列表的每项实现到下一个页面的跳转,如下代码:
          
          (5)模拟运行。在开发过程中完成某一功能,就可以进行调试,HBuilder支持多种方式,可以直接通过浏览器调试,也可以通过手机运行或通过模拟器调试,如下图所示。
          
          网页功能调试
          (6)打包WebApp。一旦开发测试完成,就可以应用打包工具生成Andriod的APK文件和iPhone的IPA文件。单击HBuilder菜单导航栏的“发行”→“原生App”-“云打包”,可以看到如下图所示的对话框,打包过程非常简单,这也是HBuilder得到广泛应用的优势之一。
          
          WebApp打包
 

更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2025 All Rights Reserved
软考在线版权所有