第三篇 Web 编程.ppt_第1页
第三篇 Web 编程.ppt_第2页
第三篇 Web 编程.ppt_第3页
第三篇 Web 编程.ppt_第4页
第三篇 Web 编程.ppt_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

1、第三篇 Web 应用程序设计,本章对应的是教材中的第三篇,包括 13 15 三章内容。 这三章分别介绍了 Web 开发基础、Web服务器控件及一个开发实例。 Web开发涉及一些基础性的东西,HTML、JavaScript、CSS 等都应该有所了解,时间原因我们就不详细讲解了。 课上将这些章整合为一章,因此内容与书上稍有变化。,本章主要内容,Web 开发基础 IIS 简介 一个简单的 ASP.NET 程序演示 例题代码的分析 Web 控件与 HTML 控件 ASP.NET 编程的一些重要问题 常用 Web 服务器控件 ASP.NET 连接数据库及数据绑定与显示,Web 表单 和 Web窗体,窗体

2、和表单的英文单词都是 Form 一般 HTML 的 Form 称为表单 把“Web表单”改为“Web窗体 ”,与之加以区分。 另外强调写 ASP.NET Web 应用程序,就像写 Windows 窗体程序一样简单方便,程序员可以大致了解 HTML 即可进行开发。,1. Web 开发基础 What is the World Wide Web ?,WWW 的概念 1989年由 Berners-Lee 提出。,What makes the Web work?,Web 依赖于以下机制: Hypertext Protocols Universal Resource Locator (URL) Clien

3、t and server computers,剖析一个URL,Note: Not all URLs will have the directory and filename,What makes the Web work?,How the Web works?,2. 浏览器解释用户的请求并向相应的服务器发出请求,3. 服务器接受并处理浏览器的请求,4. 服务器发送用户所需文件并被浏览器解释,1. 用户发送请求,5. 浏览器显示用户所需内容,Browser,Client-side 编译,运行 在运行的网页上查看原代码,和初始的HTML 文件比较一下,代码分析 HTML 代码,Default.as

4、px Row 1: 处理该文件所需信息,其中几个关键: language: C# Codebehind: 对应的后置文件 AutoEventWireup = “false” :由IDE自动生成事件代理 Inherits : 继承后置文件的类,代码分析HTML 代码,Row 3: 文档类型说明 Row 5-最后: 都是常见的标准 HTML 标记 但是对于我们添加到页面的控件,其标记都是 的形式。 该标记表明使用的是 ASP 控件 其实我们仍然可以在页面中使用标准的 HTML 页面元素。 试一下:在工具箱中展开 HTML 项,拖一个文本框到页面中,再看看代码的变化。,代码分析HTML 代码,另外你

5、会发现,ASP 控件中都有一句 runat = “server” ,表明这些控件是在服务器端执行的。 实际上,每一个 ASP.NET 控件都对应一个 HTML 元素(控件),具体对应什么类型的控件取决于浏览器和 web 控件参数的设置 当服务器返回页面到客户端时,发送回来的都是 HTML 元素。,代码分析后置代码,名字空间 System.Web:管理客户请求和服务器响应的类 System.Web.UI:创建 web 应用和控件的所需的类 System.Web.UI.WebControls:web 控件 System.Web.UI.HtmlControls:HTML控件,代码分析后置代码,执行过

6、程 首先发生 init 事件,调用 OnInit 方法 OnInit 方法调用 InitializeComponent 方法对组件进行初始化 然后发生 Load 事件,调用 Page_Load 方法,可在该方法中添加代码,处理装入 Form 时执行的操作 注意:每次加载此页都会执行该代码,如果想只在第一次加载时执行代码,需要添加控制代码(后面介绍),ASP.NET 应用程序和网站的区别,新建一个网站项目的时候,有两个选择:新建网站和新建 A Web应用程序。 它们都可以用来开发 Web 应用,但是开发时及今后的维护方面有一些差异。 简单看,小型应用用网站方式比较简单,大型项目用 Web 应用程

7、序较好。 新建网站:完成后可直接发布,发布时生成的DLL文件名是随机的,不与原文件直接对应。使用增量编译模式,文件被修改后,只有这部分才会被增量编译进去 。,ASP.NET 应用程序和网站的区别,Web应用程序: 有重新生成和发布两项 可在其中添加多个项目,便于团队合作 开发模式和 Windows 应用程序类似 发布前需要编译 后台代码有任何修改,都要重新进行编译,维护较麻烦。,5. Web 控件与 HTML 控件,Web控件是 System.Web.UI.WebControls 名称空间中定义的服务器控件,它们通常在标签中添加 例如: HTML控件在 System.Web.UI.HtmlCo

8、ntrols名称空间中,它们在常规的 HTML 标签中添加。例如: HTML 控件默认是客户端运行。 如果为它也加一句 runat=“server” 会怎样? 可以看看自动生成的代码是否有变化?,Web 与 HTML 控件的差异,HTML 控件:不具备任何抽象能力。每种控件与 HTML 标记都是一一对应的。 Web控件:运行在Web服务器上,允许通过编程控制这些网页元素,故它的目标模型不受 HTML 语法的限制。 Web 控件创建了更高级别的抽象,可以没有任何对应的 HTML 标记(如 Calendar 和 DataGrid 控件)。 Web 控件还能够在适当的场合起到合并功能的作用(例如用一

9、个 TextBox 控件来代替多个HTML标记),(1) 抽象能力,(2) 对目标浏览器的适应能力,HTML 控件不会自动检测请求页面的浏览器的能力,也不会修改它们提供的 HTML。在使用这组控件时,你要负责确保页面能同时在高级和低级浏览器上工作。 Web 控件能够自动对它们生成的结果进行调整,以确保输出结果在高级浏览器和低级浏览器上的工作同样出色。Web 控件还能够针对不同的浏览器提供不同的行为,从而充分发挥浏览器的潜力。,(3) 程序员对生成的 HTML 的控制能力,HTML 控件允许您完全控制所显示的内容以及发送到客户机浏览器的内容。 Web 控件提供了更为丰富的对象模型,以及适应多种浏

10、览器的能力。因而,它们没有提供对输出结果的相同程度的控制能力。,在开发 Web 应用程序时,可以根据这两组控件的能力以及您的需求来从中进行选择。 还可以选择在同一页上混合使用这两组控件 一般来说,Web控件功能更强大,而HTML控件效率更好。 同时提供具有一些重复功能的 HTML 控件和 Web 控件是有必要的,它给了程序员更多的选择余地。 在初学阶段,我们对 HTML 又不太熟,尽量用 Web 控件,因为它与 WINDOWS 窗体编程的感觉更一致一些。,6、ASP.NET 编程的一些重要问题,网络协议:可分为面向连接的和非连接的 面向连接的网络(如电话)是点到点通信最理想的方式 优点:建立连

11、接后,可以保持带宽,而且安全性好。缺点是它的复杂性,成本高昂。 非面向连接的网络(如信件)的代表是因特网 因特网是构建在 TCP/IP 协议上的,而 HTTP是基于 TCP/IP 的应用层协议,是非连接的。 优点:成本低廉,其规模的可扩展性。 缺点:不能保证信息安全送达,6.1 保持页面状态,HTTP 协议的固有特性,给B/S(浏览器/服务器)结构的 WEB 编程带来很大麻烦 页面无法保持自已的状态。既每当同一个页面往返一次服务器(比如刷新页面、提交表单、激发事件),服务器不记得同一页面的状态变化。 当你输入信息并“提交”,输入信息通过表单的 GET 或 POST 方式传到服务器。 当提交完返

12、回这个页面时,输入的信息看不到了,因为同一个页面往返了一次服务器,服务器不记得同一页面的两次状态变化。,解决的办法,过去通过写 Script 代码去维持页面状态变化,利用 Cookies , ASP 的 Session 对象等也可以实现,但很麻烦。 如果一个页面有数十个状态要保持,工作量很大。 ASP.NET 用简单的方法解决了这个问题,但效率倍受质疑。,WiewState 对象,是 ASP.NET 中用来保存 WEB 控件回传时状态值的一种机制。 在 WEB 窗体的设置为 runat=“server” 时,这个窗体会被附加一个隐藏的属性 _VIEWSTATE 在浏览器上看到的表单隐藏域 hi

13、dden 就是WEB 窗体在客户端 HTML 的映射。_VIEWSTATE中存放了控件在 ViewState 中的状态值。,ViewState 是类 Control 中的一个域,其他控件通过继承Control来获得 ViewState 功能。 它的类型是 system.Web.UI.StateBag,一个名称/值的对象集合。 当请求某个页面时,ASP.NET 把所有控件的状态序列化成一个字符串,然后做为窗体的隐藏属性送到客户端。 当客户端把页面回传时,ASP.NET 分析回传的窗体属性,并赋给控件对应的值。,使用 ViewState 的条件,这些条件都是系统默认的: 要使用 ViewState

14、,在 ASPX 的 HTML视图中必须有一个服务器端窗体标记 。 Page 的 EnableViewState 属性值为true 控件的 EnableViewState 属性值为 true,应注意的问题,使用 WiewState 保持页面状态不需你写代码。但是 WiewState 使用不当会造成严重的性能问题 在复杂的页面里,尤其是涉及到数据库访问时,WiewState 隐藏域 hidden 的数据可能会有几十K甚至上百K,这么大的数据量往返传递,肯定会造成性能问题。 对不需要保持状态的控件,应将 EnableViewState 属性值设为 false。,6.2 页面的 post 与 get

15、提交方式,有post 与 get 两种方式将客户端提交到服务器 理论上说,GET 是从服务器上请求数据,POST 是发送数据到服务器。 GET 方法是把数据参数队列加到一个URL上,值和表单是一一对应的,但有大小限制。 因为这一队列在 URL 里,这样参数就能看到,可以被记录下来或更改。 POST 方法可以传递大量数据到服务器,用户在浏览器端看不到这一过程。,应注意的问题,区别: Post 允许传输大量数据,而 Get 传送的数据量会受到限制,但效率却比 Post 方法好。 建议: 1、get 方式的安全性较 Post 方式差,包含机密信息的话,建议用 Post 数据提交方式; 2、做数据查询

16、时,可用 Get 方式;而做数据添加、修改或删除时,建议用 Post 方式; Form 默认的提交方式为 GET,通过属性 method=“post” 可以进行修改。,6.3 页面跳转,WEB 页面最大特点是有超连接,可以从一个网页转到另一个网页。 ASP.NET 实现超连接的方法很多。常用的有三种: 1、使用 HyperLink 控件 2、使用按钮的 PostBackUrl 属性 3、使用 Response 对象的 Redirect 方法。,HyperLink 控件,超链接,最简单的跳转方式 只要将其 NavigateUrl 属性设为目标页面即可。 例如: NavigateUrl =/Web

17、Form1.aspx 缺点:目标页面无法获取源页面的数据,使用按钮 PostBackUrl 属性,当为一个按钮设置 PostBackUrl 属性,将其指向目标页面,点击按钮时就会跳转 该方法目标页面通过 Page.PreviousPage对象,可以获得源页面控件 目标页面通过 PreviousPage 属性获取数据时,需要在页面(源)添加代码:,Redirect 方法,Response 对象的 Redirect 方法也是常用的简单定向手段。 当 Web 服务器接到一个重定向请求后,会将一个响应头送给客户端,这将导致客户端发送一个新的请求到服务器。 换句话说,一个重定向请求实际上是两个请求响应:

18、一个是最初的请求响应,另一个是新的重定向请求响应。,Redirect 方法,要注意的是该方法是一个 GET 请求,这就意味着我们不能从源页面中通过重定向命令提交数据。 但是我们可以在重定向中使用查询字符串来传递数据。例如下面代码: Response.Redirect(menu.aspx?userName=+UserName.Text); 补充例题:WebTest,演示页面跳转及传参,6.4 几个重要的内置对象,从初始的 ASP 开始,就内置了一些对象,主要有:Response、Request、Session、 Application 、 WiewState 等 这些对象在 ASP.NET 中都

19、保留下来了,这些对象都是内置对象,不需实例化(new操作符)就可以使用。 书中 P300 表 13-4 给出了这些对象的简单说明。,6.4.1 Response 对象,用于向客户端发送信息,常用方法有: 1) Response.Write方法:用于将字符、字符串、字符数组写入 HTTP 输出内容流。 例如:Response.Write(this is a test.); 2) Response.WriteFile方法:用于将指定的文件写入HTTP输出内容流。 例如:Response.WriteFile(test.txt); 3) Response.Redirect方法:用于将客户端重定向到新的

20、URL。 例如:Response.Redirect(test.aspx);,6.4.2 Request 对象,获取请求页面的 HttpRequest 对象。该对象使 服务器能获取客户端在 Web 请求期间发送的 HTTP 信息。 例如: Request.Browser.Platform:客户端使用的操作系统 Request.Browser.Type:客户端使用的浏览器类型 Request.UserHostAddress:客户端IP地址,6.4.3 Application 对象,是一个应用程序级的对象,它包含的数据可以在整个 Web 站点中被所有用户使用,在网站运行期间持久地保存数据。 可以利用

21、 Application 对象可以定义类似于所有用户公用的全局变量。 对Application 对象进行操作时,需要先进行锁定,操作完成后再解除锁定。例如: Application.Lock(); Applicationcounter= (int)Applicationcounter+1; Application.UnLock();,6.4.4 Session 对象,用来区分不同的浏览器客户。 当不同的浏览器访问服务器时,服务器会分别为其分配一段内存空间用于保存不同用户的数据信息,即每一个客户都有自己的 Session。 定义与使用Session的方法 : Sessiononline = tr

22、ue; Sessioncounter= (int)Sessioncounter+1;,6.5 Page 事件处理函数,Page 类相当于WINDOWS窗体的Form类,是WEB页面的基类,它的主要事件有: Page_Init:页面初始化引发的事件 Page_Load:加载页面时引发的事件 Page_UnLoad:页面从内存中卸载时引发 Page_Init 和 Page_Load 事件区别在于:只有后者才能完全加载控件,绑定数据。,Page_Load 事件,每当建立一个 ASP.NET WEB 程序,IDE 都会自动写一个 Page_Load 事件处理函数:protected void Page

23、_Load(object sender, System.EventArgs e) 把每次加载页面时都需要执行的一些网页的初始化代码放在这里是最合适的。如一些控件的数据绑定。 但是,每次当页面被发送回服务器,Page 就会被重新加载,启动 Page_Load 事件,执行Page_Load 事件处理程序中的所有代码。,如果希望只在网页第一次加载时执行一些代码,我们可以利用 Page 类的 IsPostBack 属性来完成这一功能。 在网页第一次加载时,该属性的值是 false。 如果网页因回送而被重新加载,IsPostBack属性的值为 true。 可在 Page_Load 用以下初始化页面的代码

24、:if ( !Page.IsPostBack ) . ,6.6 控件的事件,WEB 控件的属性窗口有闪电(事件)图标,可以在此给 WEB 控件建一个事件处理函数。 但是 HTML 控件的属性窗口没有闪电(事件)图标,把它设为服务器执行,则双击控件,可建一个 onclick 事件处理函数,可在此方法中写 javascript。 此时实际是在客户端执行的。,每当点击 ASP.NET 网页上的的 Web 控件时,窗体就会被发送到服务器上。 如果控件的 AutoPostBack 属性被设置为true,那么当该控件的状态被改变后,也会使表单发送回服务器。 如果这个属性被设置成 false,那么点击后不会

25、立刻将变化传给服务器处理。 编写 WEB 应用程序应注意: 查询数据库返回的结果集应尽可能小; WiewState 要尽可能少; 尽量减少往返服务器的次数,尽量不用事件,6.7 Web.config 文件,是一个XML文本文件,用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式) 当你新建一个 Web 应用程序后,默认情况下会在根目录自动创建一个默认的 Web.config文件,包括默认的配置。 所有的子目录都继承它的配置设置。 如果你想修改子目录的配置设置,可以在该子目录下新建一个 Web.config 文件。它可以提供除从父目

26、录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。,7. 常用 Web 服务器控件,Web 服务器控件在使用上和 Windows 窗体控件很相似,但是由于网络支持的限制,一般属性及事件要少一些。 要注意 Web 服务器控件的属性、方法、事件全部是在服务器端执行的。 用户通过客户端浏览器操作Web页面时,对Web 控件的每个请求都要发送到服务器端,服务器处理后,再将处理结果转换为客户端脚本发送到客户端显示。,7.1 简单控件,Button 类控件 有三种类型的按钮控件: Button 控件:与Windows窗体的Button控件用法相同。 LinkButton 控件:外观与Hy

27、perlink控件相同,但在功能上与 Button 控件完全相同。 ImageButton 控件:以图片形式显示的按钮。 单击时都可以将窗体提交给服务器,并触发服务器端对应的 Click 事件。,TextBox控件,1. 常用的基本属性 1) AutoPostBack 属性:控件中文本修改后,是否自动回发到服务器。该属性默认值为 false。 2) TextMode 属性:用于设置文本框接受文本的行为模式。共有三种属性值:MultiLine(多行输入模式);Password(密码输入模式);SingleLine(单行输入模式、默认)。 2. 常用的事件 TextChanged 事件:文本框的内

28、容发生更改导致窗体回发服务器时触发。注意,是否触发该事件与AutoPostBack 属性有关,少用,客户端来处理!,CheckBox 与 CheckBoxList 控件,CheckBox 与 CheckBoxList 控件都是用于向用户提供选项和选项列表。 CheckBox:一个可选项 CheckBoxList:一组可选项 当选项比较多时,或者在运行时动态的决定有哪些选项时,使用 CheckBoxList 控件比较方便。,1. CheckBox 控件的常用基本属性 AutoPostBack 属性:状态更改后是否自动回发到服务器处理。该属性默认值为 false。 2. CheckBoxList

29、控件的常用基本属性 1) Items 属性:表示控件对象中所有项的集合。 2) RepeatColumns 属性:控件中显示 CheckBox项的列数。 3) RepeatDirection 属性:决定控件中各项的显示排列方式。默认值是Vertical。 3. CheckBoxList 控件的常用基本事件 CheckedIndexChanged 事件:更改CheckBoxList控件中的选项,回发服务器时触发。,RadioButton 与 RadioButtonList 控件,注意与 Windows 控件 RadioButton 的区别: 在Windows窗体中,在同一容器中的所有RadioB

30、utton 控件都默认为同一组,只能在这些控件中进行单选; Web窗体中,默认情况下会将同一容器中的所有 RadioButton 服务器控件作为不同组,可以多选。如果希望将其作为一组,需要设置 RadioButton 的 GroupName 属性。,RadioButtonList 服务器控件是封装了一组单选按钮控件的列表控件。 其主要的属性、事件与 CheckBoxList 服务器控件相同。,ListBox 和 DropDownList 控件,ListBox 为列表框控件,而 DropDownList 是下拉列表控件,类似于 Windows 窗体中的 ComboBox 。 它们主要的属性都有

31、Items、AutoPostBack 属性。 而 ListBox 有 SelectionMode属性,用于指定控件的选择模式,当属性值设置为Multiple 时,可以选择多个。 常用事件为 SelectedIndexChanged 事件。,例14-1:Web窗体简单控件综合示例。,7.2 Table控件,Table 控件往往用来构造表单的排版与布局。 Table 控件以 TableRow 为基本单位 TableRow 以单元格 TableCell 为基本单位 Table 控件的 Rows 属性为所有行集合 类似,TableRow 有 Cells 属性 仅仅是为了排版的话,建议使用 HTML 的 Table 元素,Table 控件例题,【例14-2】Table 控件用法示例(复杂!) 本例有两处要重点掌握,一是如何通过代码添加 Table 的行,一是对 ViewState 的操作。 List 对象泛型的使用,有余力同学自己学。,7.3 HiddenField 控件,HiddenField 控件正如其名,是一个隐藏域,因此不会在界面中显示。 适用场合: 存储用户供页面使用或回传,但不希望显示出来的数据 安全性不高,因为实际值可以在页面源代码中看到。 基本属性 Value 属性,注意不是 text 属性。,HiddenField 控件,【例14-3】复选框控件示例。 该例有问

温馨提示

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

评论

0/150

提交评论