用ASP.NET开发Web应用(1)Web应用程序工作原理和设计Web应用程序基础(1)HTTP协议和HTML语言基础CGI、ISAPI和ASP技术.NET设计Web应用程序入门WebWeb运行在互联网上的世界范围的信息网络 服务器信息提供者Web服务器软件 客户机信息消费者浏览器客户-服务器通信HTTP协议HTTP协议请求-响应型的协议在TCP/IP之上HTTP事务由下列四步组成: 连接,客户机建立到Web服务器的连接 请求,客户机发送请求给Web服务器 响应,Web服务器发送响应(HTML文件)给客户机; 断开,Web服务器断开连接无记忆,无状态(stateless) 当Web服务器接收到对某页的请求时,它会查找该页,对其进行处理,将其发送到浏览器,然后丢弃所有页信息。如果用户再次请求同一页,服务器则会重复整个过程:从头开始对该页进行重新处理。换言之,服务器不会记忆它已处理的页。因此,如果应用程序需要维护有关某页的信息,这就成为一个必须在应用程序代码中解决的问题。资源定位符URL请求的资源定位URL,格式为协议://主机名[:端口]/文件绝对路径[?参数]协议HTTP,FTP等主机名域名(IP地址也可)端口一般80参数名字=值列表HTTP请求的方法方法(Method)常用的有Get和POST Get参数在URL的?后,在消息头中 POST参数在消息体中HTML(超文本标识语言)设计网页的语言 所谓超文本,因为它可以加入图片、声音、动画、影视等内容,可以从一个文件跳转到另一个文件,与世界各地主机的文件连接。由标签(Tag)和文本数据组成,标签描述怎样显示文本被浏览器解释和显示HTML的标签(Tag)…多媒体页面表格(Table)表单(Form)图象(Image)文字布局(TextStyle)字体(Font)页面(Page)脚本、对象和动态网页SCRIPT标签在网页中添加脚本脚本语言Javascript通用VBScript微软Objects标签在网页中添加对象,包括:JavaApplet,ActiveX控件脚本可调用对象,包括系统对象的方法浏览器执行脚本,执行结果出现在网页中脚本位置或指定位置,动态改变网页,甚至实现动画等效果Web应用程序工作原理和设计Web应用程序基础(1)HTTP协议和HTML语言基础CGI、ISAPI和ASP技术.NET设计Web应用程序入门CGI、ISAPI和ASP技术CGI通信方法CGI工作原理CGI和ISAPI微软的ASP技术服务器端对象CGI通信方法CGI是Web和外部程序系统的接口标准 CGI是CommonGatewayInterface的缩写,规定了Web与其它应用程序之间传递信息的标准方法。用GET方法:程序从环境变量QUERYSTRING得到Web的输入用POST方法:程序从标准输入stdin得到Web的输入程序写标准输出将数据传给WebCGI工作原理⑴客户的请求激活一个CGI应用程序;⑵CGI应用程序读出用户交互输入的信息,进行处理,比如在数据库上查询;⑶CGI应用程序将输出按HTML流形式传给Web服务器,再返回给客户,在浏览器显示;⑷CGI应用程序进程结束。CGI和ISAPI开发CGI程序常用语言Perl,C,C++,Java等每个CGI程序一个进程,建立撤消开销大ISAPI和NSAPI等技术克服上述不足微软的ISAPI是一个DLL,加载到内存不撤消,应用多线程技术,以线程代替进程处理每个用户的请求,比如Asp.DLL微软ISAPI的脚本语言VBScriptJscript微软的ASP技术ASP是ISAPI扩展,是服务器端脚本技术,IIS4以上版本支持。客户请求以.asp为扩展名的网页,IIS将交ASP处理,执行服务器端脚本。脚本可创建组件,调用组件和别的对象的方法。ASP产生的输出和.asp网页余下部分混合,以HTML流形式由IIS送回客户端。服务器端对象内部对象是Web服务器的对象模型Request输入Response输出Application应用的状态等Session会话的状态等Server服务器环境外部对象存取数据库的对象Web应用程序工作原理和设计Web应用程序基础(1)HTTP协议和HTML语言基础CGI、ISAPI和ASP技术.NET设计Web应用程序入门什么是ASP.NET?ASP.NET是建立在公共语言运行库上的编程框架,可用于在服务器上生成功能强大的Web应用程序。与以前的Web开发模型相比,ASP.NET提供了数个重要的优点: 增强的性能。ASP.NET是在服务器上运行的编译好的公共语言运行库代码。显著提高了性能。 世界级的工具支持。VisualStudio集成开发环境中的大量工具箱和设计器:WYSIWYG编辑、拖放服务器控件和自动部署等。 威力和灵活性。由于ASP.NET基于公共语言运行库,因此Web应用程序开发人员可以利用整个平台的威力和灵活性。.NET框架类库、消息处理和数据访问解决方案都可从Web无缝访问。 简易性。ASP.NET使执行常见任务变得容易,从简单的窗体提交和客户端身份验证到部署和站点配置。例如,ASP.NET页框架使您可以生成将应用程序逻辑与表示代码清楚分开的用户界面,和在类似VisualBasic的简单窗体处理模型中处理事件。另外,公共语言运行库利用托管代码服务(如自动引用计数和垃圾回收)简化了开发。 ….NET上Web应用基础用VS设计Web应用程序例10.3页面工作原理服务器控件页面指令Web窗体页Web窗体页-Web应用程序的用户界面Web窗体页在任何浏览器或客户端设备中向用户提供信息,并使用服务器端代码来实现应用程序逻辑。Web窗体代码模型Web窗体页由两部分组成:视觉元素(HTML、服务器控件和静态文本)和该页的编程逻辑。VisualStudio将这两个组成部分分别存储在一个单独的文件中。视觉元素在一个.aspx文件中创建,而代码位于一个单独的类文件中,该文件称作代码隐藏类文件(.aspx.cs)。也可以在同一文件中创建视觉元素和代码,该文件有时称作“单文件”Web窗体页。在VisualStudio中,对这种Web窗体页的支持比较有限。从Page类派生publicclassWebForm1:System.Web.UI.Page%@Pagelanguage=c#Codebehind=WebForm1.aspx.csInherits=WebApp.WebForm1%.aspx文件在用户浏览该页时会动态地进行编译Page类.aspx网页被编译为Page类的派生类 包括网页、后台代码方法、用户控件 负责处理客户端的请求(服务器事件) 向客户端输出HTML流,显示括网页内容,包括客户端和服务器控件对象的生命期 初始配置、处理事件、生成HTML文件以及清除也是无状态的对象Web窗体页往返行程操作员在浏览器的某些操作引起服务器端事件触发一次服务器往返,Page对象经历一个生命周期、客户端见到网页一次刷新往返行程在Web窗体中,大多数用户操作(例如单击一个按钮)将导致往返行程。因此,ASP.NET服务器控件中的可用事件通常仅限于Click类型的事件。大多数服务器控件公开一个Click事件,该事件要求显式的用户操作。服务器控件不公开诸如onmouseover之类的高频率事件,因为每次引发此类事件时,将发生到服务器的另一个往返行程,这将显著影响窗体中的响应时间。Web窗体页ViewStateWeb页是“无状态的”——在服务器上不保留页变量和控件的值。ASP.NET: 页面在往返行程间保存页和控件属性。以(名字,值)组成一个字符串,作为一个隐藏的表单字段ViewState保存在页面中。 由System.Web.UI.StateBag类支持。StateBag类实现一个字典,可以像对待任何字典对象那样从其中添加或移除项。 通过ViewState属性访问StateBag类。 例10.4(test:)Web窗体处理中的各个阶段读取和还原以前存储的值:使用Page.IsPostBack属性,检查是否是第一次处理该页。如果是第一次处理该页,则执行初始数据绑定。否则,还原控件值。读取和更新控件属性。引发页的Page_Load事件。用户代码初始化在此事件期间,ASP.NET页框架还原控件属性和回发数据。引发该页的Page_Init事件,并还原该页和控件视图状态。ASP.NET页框架初始化典型使用意义阶段配置阶段:Web窗体处理中的各个阶段(续)执行特定于应用程序的处理:处理所引发的特定事件。如果该页包含ASP.NET服务器控件验证类型,则检查该页和各个验证控件的IsValid属性。手动保存您正自行维护的页变量的状态。检查该页或各个验证控件的IsValid属性。手动保存动态添加到该页的控件的状态。如果已调用该页来响应窗体事件,则在此阶段期间调用该页中的相应事件处理程序。事件处理(此阶段没有用户挂钩。可以在事件处理程序中测试验证的结果。)调用任何验证程序Web服务器控件的Validate方法来执行该控件的指定验证。验证典型使用意义阶段事件处理阶段:Web窗体处理中的各个阶段(续)执行昀后的清除工作:关闭文件。关闭数据库连接。放弃对象。注意显式关闭代价高昂的资源(例如数据库连接)是十分重要的。否则,它们将在下一次发生垃圾回收前一直保持打开。在负荷很重的服务器上,如果有许多资源打开,可能会影响其性能。调用Page_Unload事件,因为该页已完成呈现并准备好被放弃。清除典型使用意义阶段显示阶段:输出HTML流清除阶段:.NET上Web应用基础用VS创建基本的Web窗体页例10.3(li103.aspx)页面工作原理服务器控件页面指令服务器控件HTML服务器控件和每个HTML元素对应 都从System.Web.UI.HtmlControls类派生Web服务器控件 都从System.Web.UI.WebControls类派生有效性验证控件 派生于System.Web.UI.WebControls.BaseValidator类HTML服务器控件默认情况下,ASP.NET文件中的HTML元素被视为文本,并且页面开发人员不能以编程方式访问。若要使这些元素能够以编程方式访问,可以通过添加runat=server属性,指示应将HTML元素作为服务器控件分析和处理。唯一的id属性允许以编程方式引用该控件。属性用于声明服务器控件实例上的属性参数和事件绑定。所有HTML控件共享的属性Attributes获取在选定的ASP.NET页中的服务器控件标记上表示的所有属性名称和值对。(attr.aspx)Disabled获取或设置一个值,该值指示当HTML控件呈现在浏览器上时是否包含disabled属性。若包含该属性将使该控件成为只读控件。Style获取被应用于.aspx文件中的指定HTML服务器控件的所有级联样式表(CSS)属性。(style.aspx)TagName获取包含runat=“server”属性的标记的元素名。Visible获取或设置一个值,该值指示HTML服务器控件是否显示在页面上。所有HTML控件常用的方法、事件DataBind(从Control继承)将数据源绑定到被调用的服务器控件及其所有子控件。FindControl(从Control继承)已重载。在当前的命名容器中搜索指定的服务器控件。HasControls(从Control继承)确定服务器控件是否包含任何子控件。DataBinding事件(从Control继承)当服务器控件绑定到数据源时发生。两个HTML控件的子集两个HTML控件的子集,共享不同基类的属性 输入控件:派生于HtmlInputControl类 容器控件:派生于HtmlC