C#程序设计语言课程内容 第一章:概述 第二章:C# 语言的基本原理 第三章:C# 中对象的创建 第四章:面向对象的编程技术 第六章:编写基于 .NET 的应用 程序 第七章:使用 ADO.NET 访问 数据 第八章:创建基于 Windows 的应用程序 第九章:在 C# 应用程序中使 用 XML Web Service 第十章:创建 Web 应用程序 十一章:应用程序设置和 部署 十二章:进阶学习目标
10 创建Web应用程序 内容: 创建 Web 窗体应用程序 在 Web 窗体应用程序中访问数据 配置 ASP.NET 应用程序设置 C#
创建 Web 窗体应用程序 10.1 学习完本节后,你将能够: 了解ASP.NET 创建Web窗体并添加控件 为控件编写事件处理程序
ASP.NET 10.1.1 ASP.NET是建立在Microsoft .NET平台架构上,利用公共语言运行时在服务器后端为用户构建新一代动态网站、基于Internet 的分布式应用程序和Web服务的编程框架 是ASP (Active Server Pages) 革命性的、更可靠的继任者
ASP.NET 命名空间 System.Web Services UI Description HtmlControls Discovery WebControls Protocols Caching Security Configuration SessionState
ASP.NET 的执行模型
ASP.NET 的优点 多语言支持 古老的ASP只能使用脚本语言来开发,如VBScript, JavaScript ASP.NET不再受语言的限制,所有.NET Framework支持的语言都可用于开发ASP.NET程序,包括VB.NET、C#、J#等。这使得ASP.NET也具有了完全面向对象的特性
ASP.NET 的优点 代码和内容分离 传统的ASP程序是“意大利面条”式的代码,因为界面设计和程序代码纠缠不清 代码更易于被重用和共享
ASP.NET 的优点 code <tags> code <tags> “幕后代码”文件 程序员和网页美工可以单独工作 同一个文件 独立的文件 code <tags> code <tags> Form1.aspx.vb Form1.aspx Form1.aspx
ASP.NET 的优点 增强的性能 传统的ASP程序,代码是解释执行的 ASP.NET程序,代码是编译执行的 第一次请求页面时,页面和代码被编译,并将编译结果缓存 第二次请求页面时,直接执行缓存的编译结果,因此大大增强了性能和安全性
ASP.NET 的优点 支持任何类型浏览器 ASP.NET 程序是在IIS Web 服务器端运行的 服务器端会自动检测客户端浏览器类型,并生成和浏览器“兼容”的HTML代码
ASP.NET 的优点 易于配置和部署 DLL不再需要注册,只要部署到\bin子目录下即可,避免了DLL陷阱 Web.Config 文件存储了所有的配置信息 部署ASP.NET程序又回到了远古的“文件拷贝”时代,只需复制文件到目标服务器即可
Web窗体应用程序 10.1.2 Web窗体如同Windows 窗体一样,用于创建可编程的Web 页面 使用ASP.NET Web 应用程序模板 提供状态管理的功能,用以保存 Web 页面在不同请求之间的状态信息
创建 Web窗体应用程序 10.1.3 使用 ASP.NET Web 应用程序模板 控件 属性 Web 窗体 解决方案资源理器中的文件
Web窗体应用程序的组件 10.1.4 Web窗体设计视图 HTML代码视图 程序代码视图 用于添加控件,设计Web 界面 ASP.NET 页面对应的HTML代码 程序代码视图 由程序员编写的与用户进行交互的代码
Web窗体应用程序的组件 10.1.4 每一个Web 窗体由2个文件组成: xxx.aspx Web页面,包含了可视化的元素 xxx.aspx.cs 程序代码(扩展名与编程语言有关) Class MyWebForm Welcome! Name: Password: OK 可视化组件 MyWebForm.asp.cs MyWebForm.aspx 用户界面逻辑 MyWebForm 这两个文件组成了 MyWebForm
Web窗体应用程序生命周期 10.1.5 了解ASP.NET Page_Init Validation Event Handling Page_Unload Page_Load
Web窗体应用程序生命周期 10.1.5 Page_Init Page_Load Textbox1_Changed 控件的events Textbox1_Changed 改变内容 Button1_Click 点击按钮 Page_Unload 页面被丢弃
为Web窗体添加控件 10.1.6 Web 控件 HTML 控件 类似于Windows 控件,一致的编程模型 功能强大 控件的事件处理程序运行在服务器端 需要更多的带宽 HTML 控件 对应于HTML 元素标记 默认情况下,事件处理程序运行在客户端,无法访问服务器上的资源,但节省带宽 可以设置成“在服务器端运行”
为Web窗体添加控件 10.1.6 Web 控件 asp 前缀 runat = “server” 表示在服务器端运行 <asp:Button id=“btnOK" runat="server">OK </asp:Button>
为Web窗体添加控件 10.1.6 HTML 控件 变成了“控件”的HTML标记,可以对其进行编程 可以设置runat = “server”, 表示在服务器端运行 <input type=“Button" id=“btnOK" value=“OK" />
Web控件先睹为快 AdRotator 控件 AdvertisementFile (XML文件) ImageUrl NavigateUrl Impressions <Ad> <ImageUrl>cry.gif</ImageUrl> <NavigateUrl>http://www.A.com</NavigateUrl> </Ad> <ImageUrl>hang.gif</ImageUrl> <NavigateUrl>http://www.B.com</NavigateUrl>
为控件添加事件处理程序 10.1.7 用户在浏览器中的行为会触发许多事件 事件触发的代码在服务器上运行 代码执行完毕以后,结果页面会送回给客户端的浏览器 private void Button1_Click(object sender,System.EventArgs e) { //(………) }
练 习 创建 Web 窗体程序 10. 3.1 本练习中的 Web Forms 应用程序将使用几个控件,包括 Validation 控件 3。参见教材P310页10.1.8 课堂练习 10 分钟
10 创建Web应用程序 内容: 创建 Web 窗体应用程序 在 Web 窗体应用程序中访问数据 配置 ASP.NET 应用程序设置 C#
在 Web程序中访问数据 10.2 学习完本节后,你将能够: 在Web窗体应用程序中使用ADO.NET 在Web窗体应用程序中显示数据
在 Web程序中访问数据 10.2.1 Web数据访问的基本原则 使用非连接模型 读取数据多于更新数据 最小化对服务器资源的需求 当服务器处理完页面并发送到浏览器后,页面连同使用的数据一并从服务器内从中被丢弃 读取数据多于更新数据 大多数情况下只是查询数据而不需往数据源写入数据,如使用Google 搜索 最小化对服务器资源的需求 Web页面只负责展示数据 使用其他组件来访问数据(如Web Service) , 实现用户界面和数据访问的分离
在 Web程序中显示数据 10.2.2 创建 Web 应用程序项目和 Web 窗体页面 创建并配置DataSet 向窗体添加 DataGrid 控件并将其绑定到数据 添加代码填充DataSet,测试 1 2 3 4 private void Page_Load(object sender, System.EventArgs e) { if ( !IsPostBack) { SqlDataAdapter1.Fill(customerDS1); DataGrid1.DataSource = customerDS1; DataGrid1.DataBind(); }
练 习 在 Web程序中访问数据库 10. 2.3 在本练习中,将开发一个包含有 DataGrid 控件的简单 Web 窗体应用程序 参见教材P317页10.2.3课堂练习 10 分钟
10 创建Web应用程序 内容: 创建 Web 窗体应用程序 在 Web 窗体应用程序中访问数据 配置 ASP.NET 应用程序设置 C#
ASP.NET应用程序设置 10. 3 学习完本节后,你将能够: 了解ASP.NET的状态管理 了解ASP.NET的安全性
ASP.NET状态管理 10.3.1 HTTP 是无状态协议 需要程序员编写代码维护页面状态 状态就是指Web 页面内的信息 当服务器将页面发送到浏览器,页面就从服务器内存中丢弃,页面上所有信息不复存在 页面之间无法共享信息 需要程序员编写代码维护页面状态
ASP.NET状态管理 10.3.1 ASP.NET 的2个状态管理对象: Application Session 一个Web应用程序的所有用户都可以访问存放在Application对象中的信息 通常存储全体用户的公共信息,信息在多用户间共享 Session 存储单个用户的信息 一个用户的多个页面间共享信息
ASP.NET状态管理 10.3.1 WebForm1.aspx.cs private void Button1_Click(object sender,System.EventArgs e) { Session[“name"]=TextBox1.Text; } WebForm2.aspx.cs private void Page_Load(object sender,System.EventArgs e) { Label1.Text = “欢迎你:” + (string)Session[“name"]; }
ASP.NET安全性 10. 3.2 开发基于Web的应用程序,安全性至关重要 身份验证 授权 扮演 对用户身份进行检查,防止非法用户访问 通常包括检查用户名和密码 授权 保护单个Web页面,允许/禁止某个用户对该页面的访问 扮演 Web 应用程序扮演“Web用户”(以用户的身份)执行某些操作,如连接数据库服务及
ASP.NET安全性 10. 3.2 身份验证 Windows --- 由IIS服务器检查用户身份 Forms ------- 程序员编写程序检查用户身份 Passport ---- 使用微软的.NET Password服务 <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.web> <authentication mode=“Windows"> </system.web>
ASP.NET安全性 10. 3.2 授权 deny 拒绝访问, allow 允许访问 *表示所有用户, ? 表示匿名用户 <location path="webform2.aspx"> <system.web> <authorization> <deny users="?“ /> <deny users=“Marry"/> </authorization> </system.web> </location>
ASP.NET安全性 10. 3.2 扮演 <system.web> IIS Web服务器 扮演 数据库 Administrator ASPNET <system.web> <authentication mode="Windows" /> <identity impersonate="true"/> </system.web>
配置ASP.NET程序设置 10. 3.3 了解ASP.NET 创建Web窗体并添加控件 为控件编写事件处理程序
使用 Web.Config 配置文件 10. 3.4 使用Web.Config文件 XML格式 区分大小写 <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.web> <compilation defaultLanguage="c#"/> <identity impersonate="true"/> <authentication mode=“Windows“/> <authorization> <deny users="?"/> </authorization>
ASP.NET Web 应用程序文件 解决方案文件 (.sln, .suo) 项目文件 (.vbproj, .csproj) ASP.NET Web 窗体 (.aspx) ASP.NET Web services (.asmx) Web 窗体幕后代码文件 (.cs) 应用程序全局文件 (.asax) Web.config 配置文件 assembly文件 (.dll)
小 憩 片 刻 C#, 小菜一碟!