ASPNET程序设计教案.docx
- 文档编号:4818036
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:11
- 大小:22.12KB
ASPNET程序设计教案.docx
《ASPNET程序设计教案.docx》由会员分享,可在线阅读,更多相关《ASPNET程序设计教案.docx(11页珍藏版)》请在冰点文库上搜索。
ASPNET程序设计教案
ASP.NET程序设计教案
第7章在C#中使用ASP.NET对象
课题
第7章在C#中使用ASP.NET对象
章节
课时
教学
目的
要求
本章主要讲解ASP.NET的内置对象。
通过本章学习,读者应掌握以下内容:
◎Page对象
◎Response对象
◎Request对象
◎Server对象
◎Application对象与Session对象:
教学重点
Response对象的主要用途。
Session对象的主要用途
教学难点
Request对象的用途。
Application对象的主要用途
教学环境
多媒体教室
板书
设计
在编程实践中,经常用到的Page对象的属性如下:
◎IsPostBack:
获取布尔值。
若IsPostBack的值为True,则表示当前网页是由于客户端返回数据而加载的。
◎IsValid:
获取布尔值。
若IsValid的值为True,则意味着网页上的验证控件全部验证成功,否则表示至少有一个验证控件验证失败。
在ASP.NET网页开始载入到被完全写入浏览器的过程中,产生的与Page对象有关的主要事件有三个,它们分别是Init、Load和UnLoad。
ASP.NET网页执行时,首先被初始化,此时会触发Page对象的Init事件,然后网页被加载并触发Page对象的Load事件(Init事件与Load事件的主要区别在于,对于来自浏览器的浏览请求而言,网页的Init事件只触发一次,而Load事件则可能触发多次);之后将是来自Server端控件的各种事件(如果这些事件存在的话),最后是Page对象的UnLoad事件。
在编程实践中,Init事件通常用来设置网页或控件属性的初始值。
而Load事件主要用于在按用户要求回送信息时,对控件属性进行设置。
至于UnLoad事件,则主要用于关闭文件、数据库连接或释放对象等。
Page对象代表.aspx文件。
了解Page对象,对于灵活控制ASP.NET的基本性态,是十分必要的。
在编程实践中,经常用到Response对象的下列属性:
◎BufferOutput:
给出或设置是否启用缓冲处理。
当Response.BufferOutput为True时,服务器将先完成对所有Response的处理,然后才将结果发送至浏览器。
◎Charset:
给出或设置字符编码方式。
◎ContextType:
给出或设置输出的HTTP内容类型。
默认为text/HTML,若要输出GIF图片,可设置为image/GIF。
◎IsClientConnected:
用于判断客户端是否仍然与服务器连接。
在编程实践中,经常用到Response对象的下列方法:
◎ClearContext():
清除所有存放在缓冲区中尚未发送到客户端的输出。
◎Close():
关闭与客户端的连接。
◎End():
结束执行ASP.NET网页,然后将缓冲区中的所有输出发送到客户端。
◎Flush():
将缓冲区中的所有输出发送到客户端,然后清空缓冲区。
◎Redirect(URL):
将浏览器重定向到地址为URL的网页。
◎WriteFile(filename):
将指定的文件写入HTML文档。
◎Write(字符串表达式):
将字符串表达式写入HTML文档。
Response对象主要用于生成HTML内容并送交浏览器
1.生成HTML文档内容
在ASP网页中,利用Response对象将信息回送浏览器的代码是十分常见的。
在ASP.NET网页中,同样可以利用这种方法将信息写入浏览器。
2.将特定文件的内容写入HTML文档
当需要将大量信息写入浏览器时,可先将这些内容写入一个文本文件,然后再利用Response.WriteFile()方法实现写入。
3.从当前网页转向其他网页
当需要根据某个或某些条件转向特定的网页时,可使用Response对象的Redirect()方法。
4.结束程序运行
Response对象的End()用于结束程序运行。
5.在客户端磁盘中写入文件以存储某些信息
可以利用Response对象将一些简单的信息以Cookie文件的形式存入客户端,以备使用。
可利用Cookie存储一些与特定客户端有关的信息。
当浏览器请求某一网页时,Cookie中的信息将被自动发往服务器端,服务器可提取Cookie中的信息。
此外,需要指出的是,Cookie是基于服务器的,即A服务器不能读取由B服务器生成的Cookie。
在默认的情况下,Cookie只存在客户端与服务器会话的期间内,不过,如果有需要的话,可以任意设置Cookie的生存期。
需要指出的是,Cookie能否正常工作,与客户端的状况密切相关。
因为,如果浏览者禁止服务器将Cookie写入本地计算机,或者将已经存在于本地的Cookie删除,则基于Cookie的应用程序将可能不能正常运行。
就Cookie容量而言,一般浏览器都将Cookie的大小限制为4098B,这意味着,当需要存储大量数据时,不能使用Cookie。
基本上,可以将Request与Response视为一对对象。
Request对象主要用于获取来自客户端的数据,如用户填入表单的数据、保存在客户端的Cookie等。
在ASP网页中,Request最重要的用途是以Request("表单域名称")的格式获取用户在表单中输入的数据。
在ASP.NET网页中,仍然可以沿用这种方式。
但是,由于ASP.NET允许用户直接访问服务器控件的属性,因此,方式Request("表单域名称")的使用日见减少。
但是,这并不表明意味着可以完全抛弃Request对象,因为借助于这个对象,可以获取许多与网页密切相关的数据。
1.获取地址、路径和文件名等信息
2.获取服务器端环境变量
服务器端环境变量可提供服务器与客户端的许多重要参数。
由于环境变量数目众多,不宜一一列举,故提供下列环境变量取值的程序。
3.获取客户端浏览器信息
Request对象的Browser属性可以获取HttpBrowserCapabilities对象,该对象中包含有浏览器信息。
4.读取客户端Cookie文件
前面已经提到过,可利用Response对象将一些简单的信息以Cookie文件的形式存入客户端。
当服务器需要提取存放在客户端Cookie中的数据时,就必须使用Request对象。
在编程实践中,经常用到的Server对象的属性如下:
◎MachineName:
获取服务器计算机名称。
◎ScriptTimeOut:
指定Script的超时时间。
Server对象所提供的是服务器方的基本属性和方法。
在编程实践中,经常用到的Server对象的方法如下:
◎HtmlEncode():
对字符串进行HTML编码,以免该字符串被解释为HTML语法。
◎HtmlDecode():
HtmlEncode()方法的逆运算。
◎UrlEncode():
对字符串进行Url编码,将其转换为特殊的字符串。
当Url中存在会使系统错误解读的字符时,应使此次方法。
◎UrlDecode():
HtmlEncode()方法的逆运算。
◎UrlPathEncode():
只对Url字符串中的路径部分进行Url编码。
◎MapPath():
将虚拟路径转换为实际路径。
◎Execute():
执行另一个ASP.NET网页,执行完成后返回原来的网页继续执行。
该方法提供了与函数调用类似的功能。
◎Transfer():
终止当前网页,执行新的网页(即实现重定向)。
1.调用指定的ASP.NET网页
2.重定向到其他网页
在ASP.NET中,Response.Redirect()和Server.Transfer()都能实现网页重定向。
这两个方法的区别在于:
◎利用Response.Redirect(),可重定向到已存在的任何网页;而Server.Transfer()只能用于重定向到已存在的位于同一目录或同一目录之下的目录中的ASP.NET网页。
◎利用Response.Redirect()完成重定向后,浏览器地址栏将显示新网页的URL,而利用Server.Transfer()完成重定向后,浏览器地址栏仍然显示旧网页的URL。
◎利用Server.Transfer()完成重定向后,原网页中所有内置对象的值仍保留;而利用Response.Redirect()完成重定向后,原网页中所有内置对象的值将被改写。
◎就重定向速度而言,Server.Transfer()优于Response.Direct()。
3.对字符串进行编码
当需要在浏览器中显示HTML源码时,应对这些源码用Server.HtmlEncode()方法进行编码,以免浏览器解释其中的格式标记。
当向服务器方发送URL参数时,如果数据中含有汉字或特殊字符(如“&”等),则应对URL参数进行编码,以免造成错误。
4.获取与虚拟路径或相对路径对应的实际路径
在构建网站时,程序员对所负责网站的逻辑存储结构是了然于胸的,但是当网站被安装在Web服务器上时,到底将其放在什么位置,是由服务器管理者决定的,一般设计网站的程序员并不知道,因此只有使用虚拟路径;另外,为了使网站能方便地在不同的服务器间迁移,使用虚拟路径也是必然的选择。
在对服务器端的文件、文件夹及数据库进行操作时,有时必须给出其实际路径。
因此,将虚拟路径转换为实际路径是一个十分实用的功能。
ASP.NET允许用户全面访问位于服务器端的文件系统。
通过编程,不仅可对文件系统的结构进行编辑(例如更改、删除、创建目录,移动或复制文件等),还可以建立新的文件,或更改已存在文件的内容,即在文件内容的层次上操作文件。
在编程实践中,对文件系统结构进行的操作比较常用,而在文件内容的层次上操作文件则十分罕见。
因此本书只介绍对文件系统结构进行操作的技术。
1.访问服务器端目录信息
用于对服务器端目录进行操作的常用方法如下:
◎Directory.CreateDirectory(Path):
按照参数Path给定的路径创建目录。
例如下列代码可在E:
\Sample\下建立目录Test。
如果在执行本代码前,E:
\Sample并不存在,则一并建立之。
Directory.CreateDirectory("E:
\Sample\Test")
◎Directory.Delete(Path,recursive):
删除参数Path给出目录。
参数recursive用于指定是否删除目的目录中的内容,省略该参数,则其值默认为False。
例如下列代码可删除空目录E:
\Sample\Test。
Directory.Delete("E:
\Sample\Test")
◎Directory.Exists(Path):
该方法返回一个布尔值,代表参数Path所指定的目录是否存在。
◎Directory.GetCreationTime(Path):
返回DateTime型数据,代表参数Path所指定的目录或文件的创建日期和时间。
◎Directory.GetCurrentDirectory():
返回值为字符串,给出ASP.NET程序所在的工作目录(注意并不是ASP.NET文件所在的目录)。
◎Directory.GetDirectoryRoot(Path):
给出参数Path所指定目录的根目录,例如Directory.GetDirectoryRoot("E:
\Sample\Test")的返回值为“E:
\”。
◎Directory.GetFileSystemEntries(Path,searchPattern):
返回值为字符串数组,给出参数Path所指定的目录中子目录及文件的完整路径及名称。
参数SearchPattern用于指定筛选条件。
可使用通配符“?
”和“*”,省略该参数时,给出参数Path所指出的目录中全部子目录及文件的完整路径及名称。
◎Directory.GetDirectories(Path,searchPattern):
返回值为字符串数组,给出参数Path所指定的目录中子目录的完整路径及目录名称。
参数searchPattern用于指定筛选条件,可使用通配符“?
”和“*”,省略该参数时,给出参数Path所指出的目录中全部子目录的完整路径及目录名称。
例如下列代码可以给出目的目录中首字符为“_”的所有子目录列表。
Directory.GetDirectories("E:
\Sample\Test","_*"):
◎Directory.GetFiles(path,searchPattern):
返回值为字符串数组,给出参数Path所指定的目录中文件的完整路径及文件名称。
参数searchPattern用于指定筛选条件。
可使用通配符“?
”和“*”,省略该参数时,给出参数Path所指出的目录中全部文件的完整路径及文件名称。
◎Directory.GetLogicalDrivers():
获取计算机上的逻辑驱动器名称,返回值为字符串数组。
◎Directory.GetLastAccessTime(path):
给出参数path指定的目录或文件最后一次被访问的日期和时间,返回值为DataTime类型。
◎Directory.GetLastWriteTime(path):
获取参数path指定的目录或文件最后一次被写入的日期和时间,返回值为DataTime类型。
◎Directory.Move(sourceDirNmae,destDirName):
将参数sourceDirName指定的源目录或文件移动至参数destDirName指定的目标位置,移动后的目录名称或文件名称可以和源目录或源文件不同。
需要指出的是,只能在同一逻辑磁盘内移动目录或文件。
◎Directory.SetCreationTime(path,creationTime):
将参数path指定的目录或文件设置为新的创建日期creationTime。
例如下面的代码可以将E:
\Samples\Ls文件夹的创建日期设置为2003-9-10。
Directory.SetCreationTime("E:
\Samples\Ls","#2003-9-10#")
◎Directory.SetCurrentDirectory(path):
将ASP.NET程序的工作目录设置为参数path给出的目录。
◎Directory.SetLastAccessTime(path,lastAccessTime):
将参数path指定的目录或文件设置为最后一次访问时间lastAccessTime。
◎Directory.SetLastWriteTime(path,lastWriteTime):
将参数path指定的目录夹或文件设置为最后一次写入时间lastWriteTime。
2.访问服务器端文件信息
用于对服务器端文件进行操作的常用方法如下:
◎File.Copy(sourceFileName,destFileName,overwrite):
复制由参数sourceFileName指定的文件,生成新文件,新文件的路径及名称为destFileName。
参数overwrite用来指定当目的文件已存在时是否覆盖原文件,省略该参数时,不覆盖已有文件。
例如下面的代码会将E:
\Sample\Week00.gif复制到E:
\Sample\Ls\,文件名为New00.gif。
如果目的文件已经存在,则会覆盖原有文件:
File.Copy("E:
\Sample\Week00.gif","E:
\Sample\Ls\New00.gif",True)
◎File.Delete(path):
删除由参数path指定的文件。
◎File.Exists(path):
该方法返回一个布尔值,代表参数path所指定的文件是否存在。
◎File.GetAttributes(path):
获取由参数path指定的文件或目录的属性。
◎File.GetCreationTime(path):
获取由参数path指定的文件或文件夹的创建时间,返回值为dataTime类型。
◎File.GetLastAccessTime(path):
获取由参数path指定的文件或文件夹最后一次被访问的日期和时间,返回值为DataTime类型。
◎File.GetLastWriteTime(path):
获取参数path指定的文件或文件夹最后一次被写入的日期和时间,返回值为DataTime类型。
◎File.Move(sourceFilename,destFileName):
将参数sourceFileName指定的源文件移动至参数destFileName指定的目标位置,移动后的文件名称可以和源文件不同。
本方法允许在不同的逻辑盘间移动文件,这与Directory.Move(sourceDirname,destDirName)方法是不同的。
◎File.SetCreationTime(path,creationTime):
将由参数path指定的文件设置为创建时间creationTime
◎File.SetLastAccessTime(path,lastAccessTime):
将由参数path指定的文件设置为最后一次访问时间lastAccessTime。
◎File.SetLastWriteTime(path,lastWriteTime):
将由参数path指定的文件设置为最后一次写入时间lastWriteTime。
Web站点事实上是一个多用户的应用程序。
通常用户之间“老死不相往来”,但在某些情况下,用户需要知道另外一些用户的情况(例如,在基于Web的聊天室中,聊天者需要知道当前有哪些用户在线)。
可供所有在线用户共享的信息应放在Application对象中。
可以把Application对象视为公共场所中的公告牌,任何一个用户写入其中的信息都可以被其他用户看到。
从技术的层面上看,网站中所有的ASP.NET程序构成了一个Web应用系统。
该系统的默认生命期,始于Web站点开始运行时,终于站点停止运行时(注意,Web应用系统被第一个浏览者激活后,其生存时间与有无浏览者在线并无直接关系)。
在此期间,任何一个访问者都可以读取或改写Applicaton对象中的内容。
当第一个用户访问网站时,将触发Application对象的OnStart事件,而站点服务终止时,将触发Application对象的OnEnd事件。
显然这两个事件的处理程序不宜放在一般的ASP.NET网页中(因为并不是每个用户都触发Application对象的OnStart事件,任何用户也无法直接触发Application对象的OnEnd事件)。
在ASP.NET中,上述两个事件的处理程序应放置在名为Global.aspx中。
该文件必须放在站点的主目录中。
在Application对象的OnStart事件的处理程序中,通常用Add方法来添加Application变量。
在Application对象的OnEnd事件的处理程序中,通常进行释放Application变量的操作。
一个包含Application对象事件处理程序的Global.aspx文件内容如下:
Global.aspx
#01:
#02:
SubApplication_OnStart(senderAsObject,eAsEventargs)
#03:
Application.Add("Count",0)
#04:
EndSub
#05:
SubApplication_OnEnd(senderAsObject,eAsEventargs)
#06:
Application.Clear()
#07:
EndSub
#08:
?
#03:
添加名为“Count”,初始值为0的Application变量。
?
#06:
清除所有的Application变量。
关参考资料。
Session对象也是用于记录信息的。
但与Application对象不同的是,Session对象为某一用户私有。
这意味着,在线的用户A不能访问同时在线的用户B的Seesion对象。
Session对象也有其生存期。
在默认的情况下,如果浏览器在20分钟内没有再访问网站中的任何网页,则该网站为其建立的Session对象将自动释放。
在编程实践中,Session对象通常用来在不同的ASP.NET网页间传递信息。
4.6.2.1Session对象的事件、重要属性和方法
1.Session对象的事件
当浏览者首次启动浏览器访问网站时,将触发Session对象的OnStart事件,而在特定的时间(默认为20分钟)内没有访问网页或者以规定的方法主动释放Session对象时,将触发Session对象的OnEnd事件。
在ASP.NET中,上述两个事件的处理程序应放置在名为Global.aspx中。
该文件必须放在站点的主目录中。
在Session对象的OnStart事件的处理程序中,通常用Add方法来添加Session变量。
在Session对象的OnEnd事件的处理程序中,通常进行的操作是将Session变量的当前值保存到文本文件或数据库中。
2.Session对象的重要属性
Session对象的重要属性如下:
◎IsNewSession:
当浏览者首次启动浏览器浏览网页时,该属性返回值为True。
而浏览者刷新网页或进入网站中的其他网页时,该属性返回值为False。
◎SessionID:
给出能唯一确定一个连接者的标识码。
◎TimeOut:
给出或设置Session对象的失效时间(单位为分钟)。
在由TimeOut属性设置的时间内,若浏览者未访问网页,则Session对象将被自动释放。
TimeOut属性的默认值为20分钟。
3.Session对象的重要方法
◎Abandon():
强制结束Session对象。
调用此方法将触发Session对象的OnEnd事件。
由于Session对象存在于服务器端内存中,如果使用了Session对象,且在线用户较多,则服务器的负担将便得比较沉重。
为了减轻服务器的负担,应遵循两条原则,一是尽量少用Session对象;二是应及时释放不再使用的Session对象。
◎Clear():
释放Session对象中的所有非对象变量。
4.6.2.2Session对象应用举例
1.Session.IsNewSession的应用
程序Prac04-20.aspx、Prac04-21.aspx所实现的计数器都存在着能被用户“灌水”的漏洞。
即用户连续刷新网页的操作,可是计数器的值迅速增加。
可以利用Session对象的IsNewSession属性了解决这个问题。
2.在网页中提供当前在线用户信息
许多网页可以提供在线用户数量、各用户的某些个人信息等。
这些功能可以用Session.SessionID来实现。
因为Session.SessionID可以唯一标识每一个用户,因此,就可以通过编程,在Application对象中建立一个用户列表。
对这个列表进行处理,就可以获得很多有趣、实用的功能。
习题:
1.简述ASP.NET网页的执行流程。
2.简述Page.IsPostBack的用途。
3.简述Response对象的主要用途。
4.简述Request对象的主要用途。
5.在Server对象所支持的方法中,比较常用的有哪些?
6.简述Application对象的主要用途。
7.简述Session对象的主要用途。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASPNET 程序设计 教案