Presentation is loading. Please wait.

Presentation is loading. Please wait.

《ASP.NET数据库网站设计教程(C#版)》

Similar presentations


Presentation on theme: "《ASP.NET数据库网站设计教程(C#版)》"— Presentation transcript:

1 《ASP.NET数据库网站设计教程(C#版)》
配套教学资源 第4章 ASP.NET常用内置对象 本章内容:ASP.NET常用内置对象,包括Page、Response,Request、Server对象等。 本章重点:Page、Response、Request和Server对象的使用。

2 4.1 Page对象 Page对象是由System.Web.UI命名空间中的Page类来实现的。Page类与ASP.NET网页文件(.aspx)相关联。ASP.NET网页也称为“Web窗体”或“Web页面”,这些文件在运行时被编译成Page对象,并缓存在服务器中。 Page对象的常用属性、方法和事件 1. Page对象的属性 Page对象提供的常用属性见表4-1。

3 【演练4-1】 下列代码实现了在页面首次加载时,填充列表框ListBox1中的各选项,而回发刷新时不重复加载。
protected void Page_Load(object sender, EventArgs e) { Button1.Text = "引起回发"; //设置按钮控件上显示的文本 if (!IsPostBack) //如果页面的加载不是回发引起的,则执行下列代码 ListBox1.Items.Add("教务处"); //填充列表框中的选项 ListBox1.Items.Add("学生处"); ListBox1.Items.Add("财务处"); }

4 如图4-1所示,用户单击页面中“引起回发”按钮时,会因回发而导致页面刷新(再次执行Page_Load事件处理程序),但列表框中的选项仍可正常显示。

5 如果将代码中对IsPostBack属性的判断语句去掉,再次运行程序时将看到如图4-2所示的错误结果。代码如下:
protected void Page_Load(object sender, EventArgs e) { Button1.Text = "引起回发"; //设置按钮控件上显示的文本 ListBox1.Items.Add("教务处"); //只要页面加载就填充列表框中的选项 ListBox1.Items.Add("学生处"); ListBox1.Items.Add("财务处"); }

6 2. Page对象的常用方法和事件 Page对象的常用方法见表4-2。 Page对象的常用事件见表4-3。

7 Web页面的生命周期 Web页面的生命周期及各阶段执行的内容如下。 ① 初始化 ② 加载视图状态 ③ 处理回发数据 ④ 加载 ⑤ 预呈现 ⑥ 保存状态 ⑦ 呈现 ⑧ 处置 ⑨ 卸载

8 4.1.3 Page对象的Load事件与Init事件比较
【演练4-2】 设计一个ASP.NET网站,向Web窗体中添加两个列表框控件ListBox1和ListBox2,添加一个按钮控件Button1。在Page对象的Load事件和Init事件中分别向ListBox1和ListBox2中填充若干数字作为选项。按钮控件无须编写任何代码,只是要在用户单击按钮时引起一个服务器端回发。 切换到代码编辑窗口,编写Page_Load和Page_Init事件代码如下:

9 protected void Page_Init(object sender, EventArgs e)
{ for (int i = 1; i < 4; i++) ListBox1.Items.Add(i.ToString()); } protected void Page_Load(object sender, EventArgs e) for(int i=1;i<4;i++) ListBox2.Items .Add (i.ToString());

10 运行程序页面初次加载后,如图4-3所示,ListBox1和ListBox2两个列表框中填充的数据完全相同。但是,单击按钮引起回发后可以看到,在Page_Load事件中填充的ListBox2控件的选项出现了重复,如图4-4所示。

11 4.2 Response对象 Response对象是从System.Web命名空间中的HttpResponse类中派生出来的。当用户访问应用程序时,系统会根据用户的请求信息创建一个Response对象,该对象被用于回应客户浏览器,告诉浏览器回应内容的报头、服务器端的状态信息以及输出指定的内容等。 Response对象的常用属性和方法 Response对象常用的属性见表4-4。

12 Response对象的常用方法见表4-5。

13 4.2.2 使用Response对象输出信息到客户端
在编写ASP.NET应用程序代码时经常会用到Response对象,其中最常用的应用之一就是使用Response对象的Write()方法或WriteFile()方法,将信息写入HTML流,并显示到客户端浏览器。 1. 使用Write方法输出信息 Write方法的语法格式如下: Response.Write(string); 其中,参数string表示希望输出到HTML流的字符串,string不但可以是字符串常量或变量,也可以包含用于修饰输出信息的HTML标记或脚本。如果希望在字符串常量中包含英文双引号("),则应使用C#转义符“\"”。

14 【演练4-3】 Response.Write()方法的使用示例,如图4-5所示。
//向浏览器输出带有HTML标记的字符串常量,<br>标记表示换行 Response.Write("<font face=黑体 size=5 color=blue>欢迎访问我的站点</font><br /><br />"); //向浏览器输出变量的值 Response.Write(DateTime.Now.ToLongTimeString()+"<br /><br />");//显示服务器时间 //向浏览器写入带有超链接的文字信息 Response.Write("<a href=' /><br />"); //向浏览器输出带有双引号的文字信息,输出为:"Welcome to my home." Response.Write("\"" + "Welcome to my home." + "\"<br /><br />");

15 2. 使用Write方法向客户端输出脚本 任何一个脚本都可以被认为是一组字符串,可以通过Write方法将其发送到客户端浏览器中执行。 例如,下列语句向浏览器写入脚本,使之弹出一个如图4-6所示的信息框: Response.Write("<script language=javascript>alert('操作成功! ');</script>"); 下列语句向浏览器写入包含有脚本的超链接文字信息,当用户单击该超链接时可实现无确认直接关闭当前窗口: Response.Write("<a href='javascript:window.opener=null;window.close()'>关闭窗口</a>");

16 3. 使用WriteFile方法 使用Response对象的WriteFile方法可以将指定的文件内容直接写入HTML输出流。其语法格式如下: Response.WriteFile(filename); 其中,filename参数用于说明文件的名称及路径。 在使用WriteFile方法将文件写入HTML流之前,应使用Response对象的ContentType属性说明文件的类型或标准MIME类型。该属性值是一个字符串,通常以如下格式表示: 类型/子类型 常用的类型及子类型包括:text/html(默认值)、image/gif、image/jpeg、application/msword、application/vnd.ms-excel和application/vnd.ms-powerpoint等。

17 例如,希望将一个保存在服务器端根站点下的文本文件“1.txt”的内容输出到客户端浏览器中,可使用如下代码:
Response.ContentType = "text/html"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); Response.WriteFile("1.txt");

18 此外,WriteFile方法常用于提供文件下载的应用中。例如,当用户单击页面中按钮控件时弹出“文件下载”对话框,允许用户在客户端打开或保存站点根文件夹下data文件夹中的“1.xls”文件,代码如下:
protected void Button1_Click(object sender, EventArgs e) { Response.ContentType = "application/vnd.ms-excel"; //设置文件类型 //设置文件内容编码 Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); Response.WriteFile(MapPath("~/data/1.xls")); //输出Microsoft Excel文件 }

19 使用Redirect方法实现页面跳转 Response对象的Redirect方法用于将客户端重定向到新的URL,实现页面间的跳转。该方法的语法格式如下: Response.Redirect(url [,endResponse]) 其中,字符串参数url表示新的目标URL地址,可选布尔参数endResponse表示是否终止当前页的执行。 例如,下列语句将使用客户端浏览器重定向到“百度”搜索引擎的主页: Response.Redirect("

20 使用Response对象的Redirect方法时应注意如下问题:
① 使用该方法实现跳转时,浏览器地址栏中将显示目标URL。 ② 执行该方法时,重定向操作发生在客户端,涉及两个不同页面,甚至是两个Web服务器之间的通信,第一阶段是对原页面的请求,第二阶段是对目标URL的请求。 ③ 该方法执行后内部控件保存的所有信息将丢失,因此当从A页面跳转到B页面后,在页面B中无法访问A页面提交的数据。若需从A页面传递数据到B页面,只能通过url参数中的“?”来实现。例如: string MyName = UserName.Text; //将文本框中的文本存入变量 //将变量值以Name为形参变量(也称为“查询字符串”)传送给目标页面welcome.aspx Response.Redirect("welcome.aspx?Name=" + MyName); 目标页面被打开后,可以使用Request对象的QueryString属性读取上一页传递来的数据。Request对象及QueryString属性将在后面进行详细介绍。

21 4.3 Request对象 Request对象是ASP.NET中常用对象之一,主要用于获得客户端浏览器的信息。例如,使用QueryString属性可以接收用户通过URL地址中“?”传递给服务器的数据;使用Request对象的UserHostAddress属性可以得到用户的IP地址;使用Browser属性集合中的成员可以读取客户端浏览器的各种信息(如:用户使用的浏览器名称及版本、客户机使用的操作系统、是否支持HTML框架、是否支持Cookie等);使用Form属性可以处理HTML表单。

22 Request对象的常用属性和方法 Request对象的常用属性见表4-6。

23 Request对象的常用方法有两个。 ① MapPath(VirtualPath):该方法将当前请求的URL中的虚拟路径VirtualPath映射到服务器上的物理路径。参数VirtualPath用于指定当前请求的虚拟路径(可以是绝对路径,也可以是相对路径)。返回值为与VirtualPath对应的服务器端物理路径。 ② SaveAs(filename, includeHeaders):该方法将客户端的HTTP请求保存到磁盘中。参数filename用于指定文件在服务器中保存的位置;布尔型参数includeHeaders用于指示是否同时保存HTTP头。

24 例如,将用户请求页面的服务器端物理路径显示到页面中,将用户的HTTP请求信息(包括HTTP头数据)保存到服务器磁盘中,代码如下:
//在页面中显示请求文件在服务器中的物理路径 Response.Write( Request.MapPath("Default.aspx")); //将用户的HTTP请求保存到abc.txt文件中 Request.SaveAs("D:\\abc.txt", true); //在C#中“\”表示转义符,所以在表示路径时应使用“\\”

25 通过查询字符串实现跨页数据传递 Request对象的QueryString属性用于接收来自用户请求URL地址中“?”后面的数据,通常将这些数据称为“查询字符串”,也称为“URL附加信息”,常被用来在不同网页中传递数据。 使用Response对象的Redirect属性可以同时传递多个参数,其语法格式如下: Response.Redirect("目标网页?要传递的参数1 &要传递的参数2&…&要传递的参数n"); 例如: string Var1 = "zhangsan"; string Var2 = Response.Redirect("result.aspx?Var=" + Var1); //传递一个参数

26 Response.Redirect("result.aspx?VarA=" + Var1 + "&VarB=" + Var2); //传递两个参数 上述语句等效于: 在目标网页中使用Request对象的QueryString属性接收参数的语法格式如下: string 接收参数的变量 = Request.QueryString["包含参数的变量"];

27 例如: string MyVar = Request.QueryString["Var"]; //提取参数变量Var的值赋给变量MyVar 使用“?”可以在页面间方便地传递数据,但在使用时也存在如下问题: ① 用户在浏览器地址栏中可以直接看到传递的数据,不适合传递敏感数据。 ② 用户可以在浏览器地址栏中自行编写“?”后面的参数值,存在安全隐患,如SQL注入等。

28 4.4 Server对象 Server对象派生自HttpServerUtility类,该对象提供了访问服务器的一些属性和方法,帮助程序判断当前服务器的各种状态。 Server对象的常用属性和方法 Server对象的常用属性如下。 MachineName属性:该属性用于获取服务器的计算机名称。 ScriptTimeout属性:该属性用于获取或设置请求超时的时间(秒)。 Server对象的常用方法见表4-7。

29 Execute和Transfer方法 Execute()方法的语法格式为: Server.Execute(url [,write]); 其中,参数url表示希望跳转到的页面路径;可选参数write是StringWrite或StreamWrite类型的变量,用于捕获跳转到的页面的输出信息。 Transfer()方法的语法格式为: Server.Transfer(url [,saveval]); 其中,参数url表示希望跳转到的页面路径;可选参数saveval是一个布尔型参数,用于指定在跳转到目标页面后,是否保存当前页面的QueryString和Form集合中的数据。注意:写在Transfer()方法语句之后的任何语句都将永不被执行。

30 MapPath方法 在ASP.NET网站执行时可能需要访问存放在服务器中的某一文件,此时就需要将文件的虚拟路径转换成服务器端对应的物理路径。而Server对象的MapPath方法就是用来完成这一任务的。MapPath()方法的语法格式为: Server.MapPath(虚拟路径); 例如,设D:\ASP.NET\WebSite1是某站点在服务器上的主目录(物理路径),返回D:\ASP.NET\WebSite1\admin\page1.aspx的语句如下: Server.MapPath("admin/page1.aspx");

31 在描述虚拟路径时,通常使用符号“~/”表示网站的根目录(相对虚拟路径);使用符号“. /”表示当前目录(相对虚拟路径),使用符号“
在描述虚拟路径时,通常使用符号“~/”表示网站的根目录(相对虚拟路径);使用符号“./”表示当前目录(相对虚拟路径),使用符号“../”表示当前目录的上级目录(相对虚拟路径)。也可以使用Request对象的FilePath属性返回当前页面的虚拟路径。

32 对字符串编码和解码 使用Server对象的HtmlEncode()和HtmlDecode()方法,可以实现对字符串的编码和解码操作;使用Server对象的UrlEncode()和UrlDecode()方法,可以实现对URL字符串的编码和解码操作。

33 1. HtmlEncode()和HtmlDecode()方法
HtmlEncode()和HtmlDecode()方法用于对包含HTML标记的字符串进行编码和解码操作,二者互为反操作。HtmlEncode()方法的语法格式为: Server.HtmlEncode(string); 其中,string参数为包含HTML标记的字符串。 HtmlDecode()方法的语法格式为: Server.HtmlDecode(string); 其中,string参数为使用HtmlDecode()方法编码后的字符串。

34 如图4-7所示的是包含HTML标记的一个字符串,如图4-8所示的是经过HtmlEncode()方法编码后的输出结果。
从编码后得到的结果可以看出,所谓HtmlEncode编码实际上就是将HTML标记中的一些特殊符号(如左/右尖括号、双引号、分号等)用特定的标记表示。经过这样的处理后,包含HTML标记的字符串可以在浏览器中原样输出,而不是将其表现为标记所代表的格式。

35 2. UrlEncode()和UrlDecode()方法
UrlEncode()和UrlDecode()方法用于对URL中的特殊符号进行编码和解码操作。与HtmlEncode()和HtmlDecode()方法一样,二者也是互为反操作。 UrlEncode()方法的语法格式为: Server.UrlEncode(url); 其中,url参数为表示URL字符串。 UrlDecode()方法的语法格式为: Server.UrlDecode(string); 其中,string参数为使用UrlDecode()方法编码后的URL字符串。

36 例如,Server.UrlEncode(" http%3a%2f%2fwww.abc.com%2fdefault.aspx%3f%e6%96%87%e4%bb%b6%3d1 可以看出,UrlEncode()方法将URL中的特殊符号(如反斜杠、冒号、问号、等号)和中文等进行了重新编码处理。UrlEncode()方法在URL地址中存在中文变量名或变量值时特别有用。

37 4.5 实训 【实训4-1】代码 【实训4-2】代码

38 再见


Download ppt "《ASP.NET数据库网站设计教程(C#版)》"

Similar presentations


Ads by Google