c第13章ASPNETWeb应用程序开发_第1页
c第13章ASPNETWeb应用程序开发_第2页
c第13章ASPNETWeb应用程序开发_第3页
c第13章ASPNETWeb应用程序开发_第4页
c第13章ASPNETWeb应用程序开发_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、1第第1部分部分第第1313章章 ASP.NET WebASP.NET Web应用程序开发应用程序开发 13.1 Web应用程序中的常用对象应用程序中的常用对象 13.2 Global.asax文件文件 13.3 网页的切换与数据传递网页的切换与数据传递 13.4 在在Web.Config中保存配置中保存配置213.1 WebWeb应用程序中的常用对象应用程序中的常用对象 在在Web应用程序运行时,应用程序运行时,ASP.NET将维护与当前应将维护与当前应用程序、每个用户会话、当前用程序、每个用户会话、当前HTTP请求、请求的请求、请求的Web窗体页等有关的信息。窗体页等有关的信息。 ASP.

2、NET页框架包含一系列封装此上下文信息的类。页框架包含一系列封装此上下文信息的类。在代码中使用这些类的实例访问内部对象。在代码中使用这些类的实例访问内部对象。313.1 WebWeb应用程序中的常用对象(续)应用程序中的常用对象(续)常用的对象及对应类常用的对象及对应类对象名对象名说明说明ASP.NETASP.NET类类ResponseResponse提供对当前页的输出流的访问提供对当前页的输出流的访问HttpResponseHttpResponseRequestRequest提供对当前页请求的访问提供对当前页请求的访问HttpRequestHttpRequestServerServer公开可

3、以用于在页之间传输控件的实用工具方法,公开可以用于在页之间传输控件的实用工具方法,对对 HTML HTML 文本进行编码和解码等文本进行编码和解码等HttpServerUtilityHttpServerUtilityApplicationApplication提供对作用于所有会话的应用程序范围的方法和提供对作用于所有会话的应用程序范围的方法和事件的访问等事件的访问等HttpApplicationStateHttpApplicationStateSessionSession为当前用户会话提供信息等为当前用户会话提供信息等HttpSessionStateHttpSessionState413.1.

4、1 Response与与RequestuResponse对象:用于向客户端发送信息,该对象提对象:用于向客户端发送信息,该对象提供了很多有用的属性和方法,常用有:供了很多有用的属性和方法,常用有: 1) Response.Write方法,用于将字符、字符串、字符数组写方法,用于将字符、字符串、字符数组写入入HTTP输出内容流。输出内容流。 例如:例如:Response.Write(this is a test.); 2) Response.WriteFile方法,用于将指定的文件写入方法,用于将指定的文件写入HTTP输输出内容流。出内容流。 例如:例如:Response.WriteFile(t

5、est.txt); 3) Response.Redirect方法,用于将客户端重定向到新的方法,用于将客户端重定向到新的URL。 例如:例如:Response.Redirect(test.aspx);513.1.1 Response与与RequestuRequest对象:获取请求的页的对象:获取请求的页的 HttpRequest 对象。该对对象。该对象使象使 ASP.NET 能够读取客户端在能够读取客户端在 Web 请求期间发送的请求期间发送的 HTTP 值。值。 例如:例如: Request.Browser.Platform 客户端使用的操作系统客户端使用的操作系统 Request.Brow

6、ser.Type 客户端使用的浏览器类型客户端使用的浏览器类型 Request.UserHostAddress 客户端客户端IP地址地址例例13-16protected void Page_Load(object sender, EventArgs e) / 在此处放置用户代码以初始化页面在此处放置用户代码以初始化页面 string weekDays = 星期日星期日, 星期一星期一, 星期二星期二, 星期三星期三, 星期四星期四, 星期五星期五, 星期六星期六 ; DateTime now = DateTime.Now; LabelDateTime.Text = string.Format(

7、今天是今天是0:yyyy年年M月月d日日 1, now, weekDays(int)now.DayOfWeek); LabelInfo.Text = string.Format(您当前的操作系统是:您当前的操作系统是:0,使用的浏览器为:使用的浏览器为:1,IP地址为:地址为:2, Request.Browser.Platform, Request.Browser.Type, Request.UserHostAddress); 713.1.2 Application与与Session对象对象uApplication对象是一个应用程序级的对象,它包含的数据可对象是一个应用程序级的对象,它包含的数

8、据可以在整个以在整个Web站点中被所有用户使用,并且可以在网站运行站点中被所有用户使用,并且可以在网站运行期间持久地保存数据,即利用期间持久地保存数据,即利用Application对象可以定义类似对象可以定义类似于所有用户公用的全局变量。于所有用户公用的全局变量。 由于由于Application对象被整个网站的所有用户使用,所以对其对象被整个网站的所有用户使用,所以对其进行操作时,需要先进行锁定,操作完成后再解除锁定。进行操作时,需要先进行锁定,操作完成后再解除锁定。 Application.Lock(); Applicationcounter= (int)Applicationcounter

9、+1; Application.UnLock(); 813.1.2 Application与与Session对象(续)对象(续)uSession对象可以用来区分不同的浏览器客户。当不同的浏对象可以用来区分不同的浏览器客户。当不同的浏览器客户访问服务器应用程序时,服务器会分别为其分配览器客户访问服务器应用程序时,服务器会分别为其分配一段内存空间用于保存不同用户的数据信息一段内存空间用于保存不同用户的数据信息,即即每一个客户每一个客户都可以有自己的都可以有自己的Session。 u定义与使用定义与使用Session的方法的方法 : Sessiononline=true; Sessioncounte

10、r= (int)Sessioncounter+1;913.2 Global.asax文件文件 Global.asax文件也称为文件也称为ASP.NET应用程序文件,该文件应用程序文件,该文件是一个可选的文件,它包含响应是一个可选的文件,它包含响应ASP.NET或或HTTP模块所模块所引发的应用程序级别和会话级别事件的代码。引发的应用程序级别和会话级别事件的代码。Global.asax文件驻留在文件驻留在ASP.NET应用程序的根目录中。应用程序的根目录中。运行运行ASP.NET应用程序时,应用程序时,ASP.NET会自动分析会自动分析Global.asax并将其编译到一个动态生成的并将其编译到

11、一个动态生成的.NET Framework类中。由于类中。由于Global.asax文件不是必需的,因文件不是必需的,因此只在希望处理应用程序事件或会话事件时,才应该创此只在希望处理应用程序事件或会话事件时,才应该创建该文件。建该文件。 10 Global.asax文件中包含的常用事件:文件中包含的常用事件: 1) Application_Start事件事件 第一个客户首次请求页面时触发。第一个客户首次请求页面时触发。 2) Session_Start事件事件 每个客户首次请求页面时都触发。每个客户首次请求页面时都触发。 3) Session_End事件事件 在关闭应用程序或者每个客户在规定时

12、间内没有提出请求时在关闭应用程序或者每个客户在规定时间内没有提出请求时触发。触发。 4) Application_End事件事件 在关闭应用程序或者最后一个客户在规定时间内没有提出请在关闭应用程序或者最后一个客户在规定时间内没有提出请求时触发。求时触发。例例13-211void Application_Start(object sender, EventArgs e) Applicationcounter = 0; ApplicationuserCounter = 0; System.Data.SqlClient.SqlConnection conn = new System.Data.Sql

13、Client.SqlConnection(System.Configuration.ConfigurationManager.ConnectionStringswebdevelopConnectionString.ConnectionString); System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(select * from logincount , conn); System.Data.SqlClient.SqlDataReader rd = null; conn.Open();

14、rd = command.ExecuteReader(); if (rd.Read() ApplicationuserCounter = Convert.ToInt32(rdcount); rd.Close(); conn.Close(); 12void Session_Start(object sender, EventArgs e) Application.Lock(); Applicationcounter = (int)Applicationcounter + 1; ApplicationuserCounter = (int)ApplicationuserCounter + 1;/统计

15、网站登录次数统计网站登录次数SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStringswebdevelopConnectionString.ConnectionString); conn.Open(); SqlCommand command = new SqlCommand(string.Format(update logincount set count =0,(int)ApplicationuserCounter) , conn); command.Ex

16、ecuteNonQuery(); conn.Close(); Application.UnLock(); SessionuserName = ; Sessionid = ; /在线论坛用在线论坛用 Sessionzhuti = ; /在线论坛用在线论坛用 13void Session_End(object sender, EventArgs e) Application.Lock(); Applicationcounter = (int)Applicationcounter - 1; Application.UnLock(); 1413.3 网页的切换与数据传递网页的切换与数据传递 常用有下面

17、几种切换网页的方法:常用有下面几种切换网页的方法:1) 利用链接切换到新网页,比如使用利用链接切换到新网页,比如使用HyperLink控件直接链接控件直接链接到其他网页。到其他网页。2) 利用客户端脚本和利用客户端脚本和HTML控件切换到新网页,比如利用客户控件切换到新网页,比如利用客户端脚本的端脚本的open、ShowModalDialog、ShowModallessDialog以及以及HTML的的IFRAME等。等。3) 使用使用Response.Redirect方法切换到新的网页。方法切换到新的网页。4) 使用使用Server.Transfer方法切换到新的网页。方法切换到新的网页。 1

18、513.3 网页的切换与数据传递(续)网页的切换与数据传递(续) Response.Redirect和和Server.Transfer方法均可以在代码隐藏方法均可以在代码隐藏类中编写代码切换到新的网页,不同点:类中编写代码切换到新的网页,不同点:u Response.Redirect方法不限于方法不限于.aspx网页,也不限于当前网网页,也不限于当前网站。站。Server.Transfer方法只能切换到方法只能切换到同一个应用程序同一个应用程序 .aspx网网页。页。uResponse.Redirect方法切换到新网页之后,浏览器的地址栏方法切换到新网页之后,浏览器的地址栏将显示新的网址,将显

19、示新的网址,Server.Transfer方法切换到新的网页后,方法切换到新的网页后,浏览器的地址栏仍然显示原来的地址,相对来说保密性好一浏览器的地址栏仍然显示原来的地址,相对来说保密性好一些。些。uResponse.Redirect方法只适用于传递小于方法只适用于传递小于2KB的参数数据。的参数数据。Server.Transfer方法则可以传递超过方法则可以传递超过2KB的参数信息。的参数信息。1613.3 网页的切换与数据传递(续)网页的切换与数据传递(续)u网页间传递数据的方法常用有:网页间传递数据的方法常用有: 使用使用QueryString传递数据,传递数据,例例13-3 利用利用S

20、ession对象传递或共享数据对象传递或共享数据 ,13-4 利用利用PreviousPage属性获取数据属性获取数据 ,13-517使用使用QueryString传递数据传递数据 在切换到另一个网页时直接在网页的在切换到另一个网页时直接在网页的ULR后加传递的参数,后加传递的参数,第一个参数前用第一个参数前用“?”和网页名分隔,有多个参数时,各参数和网页名分隔,有多个参数时,各参数之间用之间用“&”分隔,每个参数的形式为分隔,每个参数的形式为“变量名变量名=值值”。 而而在另一个网页中使用在另一个网页中使用 Request.QueryStringstringName 接收传递的参数。

21、接收传递的参数。 如果传递的参数中包含汉字、如果传递的参数中包含汉字、?、& 等特殊符号,则需要在等特殊符号,则需要在传递时进行传递时进行Url编码编码,例如:,例如: Server.Transfer(string.Format( test.aspx?name=0&pwd=1, Server.UrlEncode(TextBoxName.Text), Server.UrlEncode(TextBoxPwd.Text);18使用使用QueryString传递数据传递数据接收传递的参数时,再进行接收传递的参数时,再进行Url解码,例如:解码,例如:protected void Pag

22、e_Load(object sender, System.EventArgs e) Response.Write(姓名:姓名: + Server.UrlDecode(Request.QueryStringname); string str=; Response.Write(str.PadRight(5, u3000) + 密码:密码: + Server.UrlDecode(Request.QueryStringpwd) + ); Response.Write(您好,欢迎您登录本网站!您好,欢迎您登录本网站!); 19利用利用Session对象传递或共享数据对象传递或共享数据 u 由于每个用户都

23、可以有自己的由于每个用户都可以有自己的Session,而创建的,而创建的Session对象所拥有的,并不局限于某一个网页,所以可以使用对象所拥有的,并不局限于某一个网页,所以可以使用Session对象传递数据。对象传递数据。u注意:使用注意:使用Session会占用服务器的内存资源,并且所有会占用服务器的内存资源,并且所有信息将一直存储在内存中直到信息将一直存储在内存中直到Session过期。所以与直接过期。所以与直接向下页传递信息相比,使用向下页传递信息相比,使用Session传值时系统开销较大。传值时系统开销较大。20利用利用PreviousPage属性获取数据属性获取数据 u位于同一个应

24、用程序中的两个位于同一个应用程序中的两个ASP.NET网页,其中一个网页网页,其中一个网页可以使用页面的可以使用页面的PreviousPage属性来获取另一个网页中的公属性来获取另一个网页中的公共属性或是控件值。共属性或是控件值。 在使用前必须在本网页的源代码中添加代码在使用前必须在本网页的源代码中添加代码: 意思是指出意思是指出本网页的前一个网页是哪个网页本网页的前一个网页是哪个网页。21利用利用PreviousPage属性获取数据(续)属性获取数据(续)【例【例13-5】利用】利用PreviousPage属性获取前一网页的公共属性。属性获取前一网页的公共属性。 (1) 在在login.as

25、px.cs的的login类中添加属性。类中添加属性。public string Username get return TextBoxName.Text; (2) 修改修改ButtonLogin的的Click事件代码如下:事件代码如下:protected void ButtonLogin_Click(object sender, EventArgs e) Server.Transfer(test.aspx);22利用利用PreviousPage属性获取数据(续)属性获取数据(续) (3) 切换到切换到test.aspx的【源】视图,在第的【源】视图,在第2行添加:行添加: (4) 修改修改te

26、st.aspx的的Page_load代码如下:代码如下:protected void Page_Load(object sender, EventArgs e) Response.Write(姓名:姓名: + (string)PreviousPage.Username);u也可以使用也可以使用PreviousPage.FindControl获取前一个网页中的获取前一个网页中的控件值。例如在控件值。例如在test.aspx页面中添加一个页面中添加一个Label1控件,显示控件,显示login.aspx页面中的页面中的TextBoxName控件的值,则只需要修改控件的值,则只需要修改test.as

27、px的的Page_load中的代码为如下代码:中的代码为如下代码:23利用利用PreviousPage属性获取数据(续)属性获取数据(续)if (Page.PreviousPage != null) TextBox SourceTextBox = (TextBox)Page.PreviousPage.FindControl(TextBoxName ); if (SourceTextBox != null) Label1.Text = SourceTextBox.Text; 24protected void ButtonLogin_Click(object sender, EventArgs e

28、) /例例13-3 /Server.Transfer(string.Format(test.aspx?name=0&pwd=1,Server.UrlEncode(TextBoxName.Text), Server.UrlEncode(TextBoxPwd.Text); /例例13-4 /* Sessionname = TextBoxName.Text; Sessionpwd = TextBoxPwd.Text; Response.Redirect(test.aspx); */ /例例13-5 / Server.Transfer(test.aspx); string name = Tex

29、tBoxName.Text; string pwd = TextBoxPwd.Text; if (name.IndexOf() -1 | name.IndexOf( ) -1 | name.IndexOf() -1 | pwd.IndexOf() -1 | pwd.IndexOf( ) -1 | pwd.IndexOf() -1) LabelState.Text = 用户名或密码包含有非法字符!用户名或密码包含有非法字符!; return; 25 /数据库连接,实现用户身份认证数据库连接,实现用户身份认证 SqlConnection conn = new SqlConnection (Syst

30、em.Configuration.ConfigurationManager.ConnectionStringswebdevelopConnectionString.ConnectionString); SqlCommand command = new SqlCommand(SelectUser, conn); command.CommandType = CommandType.StoredProcedure; SqlParameter UserName = command.Parameters.Add(name, SqlDbType.NVarChar, 30); UserName.Value

31、= TextBoxName.Text; SqlParameter UserPwd = command.Parameters.Add(pwd, SqlDbType.VarChar, 20); UserPwd.Value = TextBoxPwd.Text; conn.Open(); try SqlDataReader dr = command.ExecuteReader(); 26 if (dr.Read() = true) SessionuserName = name; LabelState.Text = 用户用户 + name + 登录成功。登录成功。; Server.Transfer(in

32、dex.aspx); else SessionuserName = ; LabelState.Text = 登录失败,无此用户名或密码不正确!登录失败,无此用户名或密码不正确!; dr.Close(); catch (Exception err) LabelState.Text = 系统错误:系统错误: + err.Message; conn.Close(); 27 public string Username get return TextBoxName.Text; public string Userpwd get return TextBoxPwd.Text; protected voi

33、d ButtonRegister_Click(object sender, EventArgs e) Server.Transfer(register.aspx); /注意,网站内须添加注意,网站内须添加Web窗体窗体register.aspx用于用户注册。用于用户注册。 28protected void Page_Load(object sender, EventArgs e) /例例13-3 /* Response.Write(姓名:姓名: + Request.QueryStringServer.UrlDecode(name); string str=; /str.PadRight(5,u

34、3000)的功能为在的功能为在str的右边填充全角空格使其长度为的右边填充全角空格使其长度为5 Response.Write(str.PadRight(5, u3000) + 密码:密码: + Request.QueryStringpwd + ); Response.Write(您好,欢迎您登录本网站!您好,欢迎您登录本网站!); */ /例例13-4 /* /+.PadRight(3,u3000)的含义是添加的含义是添加3个全角空格个全角空格 Response.Write(姓名:姓名: + Sessionname.ToString() + .PadRight(3, u3000); Respo

35、nse.Write(密码:密码: + Sessionpwd.ToString()+ ); Response.Write(您好,欢迎您登录本网站!您好,欢迎您登录本网站!); */29/例例13-5 /* Response.Write(姓名:姓名: + (string)PreviousPage.Username + .PadRight(3, u3000); Response.Write(密码:密码: + (string)PreviousPage.Userpwd + ); Response.Write(您好,欢迎您登录本网站!您好,欢迎您登录本网站!); */ /读取前一网页控件的值读取前一网页控

36、件的值 /* if (Page.PreviousPage != null) TextBox SourceTextBox = (TextBox)Page.PreviousPage.FindControl(TextBoxName); if (SourceTextBox != null) Label1.Text = SourceTextBox.Text; */3013.4 在在Web.Config中保存配置中保存配置u为了提高扩展性和灵活性,为了提高扩展性和灵活性,ASP.NET专门设置一个专门设置一个Web.Config文件来保存配置信息。文件来保存配置信息。uWeb.Config不一定要放在不一

37、定要放在Web应用程序的根目录下。同一个应用程序的根目录下。同一个Web应用程序下的所有子目录都可以拥有自己的应用程序下的所有子目录都可以拥有自己的Web.Config文件。此时文件。此时IIS会先继承根目录下的配置设置,如果碰到相会先继承根目录下的配置设置,如果碰到相同的配置标记,则现行目录下的同的配置标记,则现行目录下的Web.Config配置将覆盖根配置将覆盖根目录下同名的配置设置。目录下同名的配置设置。uWeb.Config中包含许多配置节,这些节有些是通用的,另中包含许多配置节,这些节有些是通用的,另外也允许开发者自定义所需要的节,并加上特定的节标记。外也允许开发者自定义所需要的节,

38、并加上特定的节标记。 31protected void ButtonOk_Click(object sender, EventArgs e) /新用户注册代码新用户注册代码 SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStringswebdevelopConnectionString.ConnectionString); SqlCommand command = new SqlCommand(CheckUser, conn); command.CommandType = CommandType.Stored

温馨提示

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

评论

0/150

提交评论