ASP.Net 基本对象
Asp.Net是一个庞大的软件体系,它提供了大量的对象类库,这些类库包含了许多封装好的内置对象,开发人员可以直接使用这些对象的方法和属性,只需较少的代码量就可以完成很多的功能。
Page类、Request类、Response类、Server对象主要用来链连接服务器和客户端浏览器之间的联系。
Cookie对象、Session对象、Application对象主要用于网站状态管理。
Page类
在ASP.NET Framework中,Page类为ASP.NET应用程序从.aspx文件构建的所有对象提供基本行为。该类在命名空间 System.Web.UI命名空间中定义,从TemplateControl中派生出来,实现了IHttpHandler接口。
Page类通常与扩展名为.aspx的文件相关联,这些文件在运行时被编译为Page对象,并被缓存在服务器内存中。
页面的工作过程:
说明:
①客户端浏览器向Web应用程序进行一个页面的请求。
②服务器端Web应用程序接收到这个请求,先查看这个页面是否被编译过,如果没有被编译过,就编译这个Web页面,然后对这个页面进行实例化产生一个Page对象。
③Page对象根据客户请求,把信息返回给IIS,然后信息由IIS返回给客户端浏览器。
④在这个过程中,每个页面都被编译成一个类,当有请求的时候就对这个类进行实例化。
⑤Page类是从System.Web.UI.TemplateControl类继承而来,而TemplateControl类继承自System.Web.UI.Control,它也是一种特殊的Control
属性
Page 属性 | 描述 |
---|---|
Application | 为当前Web请求获取HttpApplicationState对象。 |
IsPostBack | 指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问 |
IsValid | 指示页验证是否成功 |
Request | 获取请求的页的HttpRequest对象 |
Reponse | 获取与该Page对象关联的HttpResponse对象 |
Server | 获取Server对象,它是HttpServerUtility类的实例 |
Session | 获取ASP.Net提供的当前Session对象 |
Validators | 获取请求的页上包含的全部验证控件的集合 |
ViewState | 获取状态信息的字典,这些信息使 用户可以在同一页的多个请求间保存和还原服务器控件的视图状态 |
方法
Page 方法 | 描述 |
---|---|
MapPath(virtualPath) | 将virtualPath指定的虚拟路径转换成实际路径 |
ResolveUrl(relativeUrl) | 将相对地址relativeUrl装换为绝对地址 |
Validate() | 执行网页上的所有验证控件 |
DataBind() | 将数据源连接到网页上的服务器控件 |
Dispose | 强制服务器控件在内存释放之前执行最终的清理操作 |
FindControl(id) | 在页面上搜索标识名称为id的控件 |
HasControls() | 判断page对象是否包含控件 |
事件
Page 事件 | 描述 |
---|---|
PreInit | 在页初始化开始前发生,是网页执行时第一个被触发的事件 |
PreLoad | 在信息被写入到客户端前会触发此事件 |
Load | 当网页被加载时会触发此事件 |
Init | 在网页初始化开始时发生 |
PreRender | 在信息被写入到客户端前会触发此事件 |
Unload | 网页完成处理并且信息被写入到客户端后会触发此事件 |
InitComplete | 在页面初始化完成时发生 |
LoadComplete | 在页面生命周期的加载结束时发生 |
Request类
Request 对象是System.Web.HttpRequest类的实例。当用户在客户端使用Web浏览器向Web应用程序发出请求时,就会将客户端的信息发送到Web服务器。Web服务器就接收到一个HTTP请求,它包含了所有查询字符串参数或表单参数、Cookie数据以及浏览器的信息。在ASP.NET中运行时把这些客户端的请求信息封装成Request对象。
常用方法
①BinaryRead:执行对当前输入流进行指定字节数的二进制读取。
②MapImageCoordinates:将传入图像字段窗体参数影射为适当的x/y坐标值。
③MapPath:为当前请求将请求的URL中的虚拟路径映射到服务器上的物理路径。
④SaveAs:将HTTP请求保存到磁盘。
⑤ValidateInput:验证由客户端浏览器提交的数据,如果存在具有潜在危险的数据,则引发一个异常。
常用属性
Request 属性 | 描述 |
---|---|
AcceptTypes | 获取客户端支持的MIME接受类型的字符串数组 |
ApplicationPath | 获取服务器上ASP.Net应用程序的虚拟应用程序根路径 |
Browser | 获取有关正在请求的客户端的浏览器的功能信息 |
Cookies | 获取客户端发送的cookie的集合 |
CurrenExceptionFilePath | 获取或设置输出流的HTTP字符集 |
FilePath | 获取当前请求的虚拟路径 |
Files | 获取客户端上传的文件(多不见MIME格式)集合 |
Form | 获取窗体变量集合 |
Headers | 获取HTTP头集合 |
InputStrem | 获取传入的HTTP实体主体的内容 |
Item | 获取Cookies、Form、QueryString、ServerVariables集合中制定的对象。在C#中为HttpRequest类的索引器 |
Path | 获取当前请求的虚拟路径 |
PathInfo | 获取具有URL扩展名的资源的附加路径信息 |
PhysicalPath | 获取与请求的URL相对应的物理文件系统路径 |
QueryString | 获取HTTP查询字符串变量集合 |
RawUrl | 获取当前请求的原始URL |
ServerVariables | 获取Web服务器变量的集合 |
Url | 获取有关当前请求的URL的信息 |
Response类
Response对象是System.Web.HttpResponse类的实例,它封装了Web服务器对客户端请求的响应,用来操作HTTP相应的信息,用于将结果返回给请求者。虽然ASP.NET中控件的输出不需要我们去写HTML代码,但是在很多的时候我们希望能自己手动控制输出流,比如文件的下载、重定向等。
方法
Response 方法 | 描述 |
---|---|
BinaryWrite | 将一个二进制字符串写入HTTP输出流 |
Clear | 清除缓冲区流中的所有内容输出 |
Close | 关闭到客户端的套接字连接。 |
End | 将当前所有缓冲的输出发送到客户端,停止该页的执行,并引发 Application_EndRequest 事件 |
Flush | 向客户端发送当前所有缓冲的输出 |
Redirect | 将客户端重定向到新的 URL |
Write | 将信息写入 HTTP 输出内容流 |
WriteFile | 将指定的文件直接写入HTTP内容输出流 |
属性
Response 属性 | 描述 |
---|---|
Buffer | 获取或设置一个值,该值只是是否缓冲输出,并在完成处理整个响应之后将其发送 |
BufferOutput | 获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个页之后将其发送 |
Cache | 获取Web页的缓存策略(过期时间、保密性、变化子句) |
CacheControl | 将Cache-Control HTTP头设置为Public或Private |
Charset | 获取或设置输出流的HTTP字符集 |
ContentEncoding | 获取或设置输出流的HTTP字符集 |
ContentType | 获取或设置输出流的HTTP MIME类型 |
Cookies | 获取响应Cookie集合 |
Expires | 获取或设置在浏览器上缓存的页过期之前的分钟数。如果用户在页过期之前返回同一页,则显示缓存的版本 |
ExpiresAbsolute | 获取或设置将缓存信息从缓存中移除时的绝对日期和时间 |
Filter | 获取或设置一个包装筛选器对象,该对象用于在传输之前修改HTTP实体主体 |
IsClientConnected | 获取一个值,通过该值指示客户端是否仍连接在服务器上 |
Output | 启用到输出HTTP响应流的文本输出 |
OutputStream | 启动到输出HTTP内容主体的二进制输出 |
RedirectLocation | 获取或设置HTTP “位置” 标头值 |
Status | 设置返回到客户端的Status栏 |
Server对象
Server对象是System.Web.HttpServerUtility类的实例,它包含了一些与服务器相关的信息。使用它可以获得有关最新的错误信息、对HTML文本进行编码和解码、访问和读写服务器端的文件等功能。
常用方法
Server 方法 | 说明 |
---|---|
ClearError | 清除前一个异常 |
CreateObject | 创建由对象类型标识的COM对象的一个服务器实例 |
Execute | 在当前请求的上下文中执行指定的虚拟路径的处理程序 |
GetLastError | 返回一个异常 |
HtmlDecode | 对HTML编码的字符串进行解码,并讲解输出发送到System.IO.TextWriter输出流 |
HtmlEncode | 对字符串进行HTML编码,并讲解输出发送到System.IO.TextWriter输出流 |
MapPath | 返回与Web服务器上的指定虚拟路径相对应的物理文件路径 |
Transfer | 终止当前页的执行,并未当前请求的开始执行新页 |
UrlDecode | 对字符串进行解码,该字符串为了进行HTTP传输而进行编码并在URL中发送到服务器 |
UrlEncode | 编码字符串,以便通过URL从服务器到客户端进行可靠的HTTP传输 |
UrlPathEncode | 对URL字符串的路径部分进行URL编辑,并返回已编码的字符串 |
常用属性
Server 属性 | 说明 |
---|---|
MachineName | 获取服务器的计算机名称 |
ScriptTimeout | 获取或设置请求超时值(以秒计) |
状态管理
ASP.NET程序和桌面程序一个显著的区别是:对于ASP.NET程序,无法保存程序运行的状态。由于这个原因,状态管理对于Web应用程序来说是非常重要的。
ASP.NET提供了多种状态管理的机制,包括Session对象、Application对象、Cookie对象和ViewState对象。
Session对象
ASP.NET采用一个具有120位的标识符来跟踪每一个Session。ASP.NET中利用专有算法来生成这个标识符的值,从而保证了(统计上的)这个值是独一无二的,这个特殊的标识符就被称为SessionID
Session对象实际上操作System.Web命名空间中的HttpSessionState类 。可以为每个用户的会话存储信息。Session对象中的信息只能被用户自己使用,而不能被网站的其他用户访问,因此可以在不同的页面间共享数据,但是不能在用户间共享数据。
利用Session进行状态管理是一个ASP.NET的显著特点。它允许程序员把任何类型的数据存储在服务器上。
SessionID是传播于网络服务器和客户端之间的唯一的一个信息。当客户端出示它的SessionID,ASP.NET找到相应的Session,从状态服务器里获得相应的序列化数据信息,从而激活该Session,并把它放到一个可以被程序所访问的集合里。为系统能够正常工作,客户端必须为每个请求保存相应的SessionID,获取某个请求的SessionID的方式有两种:
①使用Cookies。在这种情况下,当Session集合被使用时,SessionID被ASP.NET自动转化一个特定的Cookie(被命名为ASP.NET_SessionID)。
②使用改装的URL。在这种情况下,SessionID被转化一个特定的改装的URL。ASP.NET的这个新特性可以让程序员在客户端禁用Cookies时创建Session。
ASP.NET对于Session内容的存储也提供了多种的模式:
①InProc(默认):Session存储在IIS进程中(Web服务器内存)。InProc拥有最好的性能,但牺牲了健壮性和伸缩性。
②StateServe:Session存储在独立的Windows服务进程asp.net_state.exe中(可以不是Web服务器)。
③SqlServer:Session存储在SqlServer数据库的表中,可以用aspnet_regsql.exe配置它(SqlServer服务器)
常用方法
Session 方法 | 说明 |
---|---|
Abandon | 取消当前会话 |
Add | 想当前会话状态集合中添加一个新项 |
Clear | 清空当前会话状态集合中所有键和值 |
CopyTo | 把当前会话状态值集合复制到一维数组中 |
Remove | 删除会话状态集合中的项 |
RemoveAll | 删除所有会话状态值 |
RemoveAt | 删除指定索引处的项 |
属性
Session 属性 | 说明 |
---|---|
Count | 获取会话状态下Session对象的个数 |
TimeOutSession | Session对象的生存周期 |
SessionID | 用于标识会话的唯一编号 |
事件
Session 事件 | 说明 |
---|---|
Session_OnStart | 在创建一个Session时被触发 |
Session_OnEnd | 在用户Session结束时被调用 |
备注: | 可以在Global.asax文件中为这两个事件增加处理代码 |
Cookie对象
Cookie对象是System.Web命名空间中HttpCookie类的对象。Cookie对象为Web应用程序保存用户相关信息提供了一种有效的方法。当用户访问某个的站点时,该站点可以利用Cookie保存用户首选项或其他信息,这样当用户下次再访问该站点时,应用程序就可以检索以前保存的信息。
当用户第一次访问某个站点时,Web应用程序发送给该用户一个页面和一个包含日期和时间的Cookie。用户的浏览器在获得页面的同时还得到了这个Cookie,并且将它保存在用户硬盘上的某个文件夹中。以后如果该用户再次访问这个站点上的页面,浏览器就会在本地硬盘上查找与该网站相关联的Cookie。如果Cookie存在,浏览器就将它与页面请求一起发送到网站,Web应用程序就能确定该用户上一次访问站点的日期和时间。
Cookie中保存的信息片断以“键/值”对的形式储存,一个“键/值”对仅仅是一条命名的数据。一个网站只能取得它放在用户的电脑中的信息,它无法从其它的Cookies文件中取得信息,也无法得到用户的电脑上的其它任何东西。
使用Cookies的优点可以归纳如下几点:
1可配置到期规则。Cookies可以在浏览器会话结束时到期,或者可以在客户端计算机上无限期存在。
2不需要任何服务器资源。Cookies存储在客户端并在发送后由服务器读取。
3简单性。Cookies是一种基于文本的轻量结构,包含简单的键值对。
4数据持久性。Cookies通常是客户端上持续时间最长的数据保留形式。
属性
Cookie 属性 | 说明 |
---|---|
Domain | 获取或设置将此Cookies与其关联的域 |
Expires | 获取或设置此Cookie的过期日期和时间 |
ItemHttpCookie.Values | 此属性是为了与以前的ASP版本兼容而提供的。在C#中,该属性为HttpCookie类的索引器 |
Name | 获取或设置Cookies的名称 |
Path | 获取或设置输出流的HTTP字符集 |
Secure | 获取或设置一个值,该值指示是否通过SSL(即仅通过HTTPS)传输Cookie |
Value | 获取或设置单个Cookies值 |
Values | 获取在单个Cookies对象中包含的键值对的集合 |
方法
Cookie 方法 | 说明 |
---|---|
Add | 添加一个Cookies变量 |
Clear | 清除Cookies集合中的变量 |
Get | 通过索引或变量名得到Cookies变量值 |
GetKey | 以索引值获取Cookies变量名称 |
Remove | 通过Cookies变量名称来删除Cookies变量 |
Application对象
Application对象是System.Web命名空间中的HttpApplicationState类的实例。Application对象为经常使用的信息提供了一个有用的Web站点存储位置,Application中的信息可以被网站的所有页面访问,因此可以在不同的用户间共享数据。
Application的原理是在服务器端建立一个状态变量,来存储所需的信息。要注意的是:首先,这个状态变量是建立在内存中的;其次是这个状态变量是可以被网站的所有页面访问的。
特点:
1数据可以在Application对象内部共享。
2一个Application对象包含事件,可以触发某些Applicatin对象脚本。
3个别Application对象可以用Internet Service Manager来设置而获得不同属性。
4单独的Application对象可以隔离出来在它们自己的内存中运行.
5可以停止一个Application对象(将其所有组件从内存中驱除)而不会影响到其他应用程序。
6一个网站可以有不止一个Application对象。典型情况下,可以针对个别任务的一些文件创建个别的Application对象。
7Application对象成员在服务器运行期间持久地保存数据。Application对象成员的生命周期止于关闭IIS或使用Clear方法清除。
8因为多个用户可以共享一个Application对象,所以必须要有Lock和Unlock方法,以确保多个用户无法同时改变某一属性。
属性
Application 属性 | 描述 |
---|---|
AllKeys | 获取HttpApplicationState集合中的访问键 |
Count | 获取HttpApplicationState集合中的对象数 |
方法
Application 方法 | 说明 |
---|---|
Add | 增加一个Application对象的变量 |
Clear | 清除全部Application对象的变量 |
Get | 使用索引或者变量名称获取变量值 |
GetKey | 使用索引获取变量名称 |
Lock | 锁定全部变量 |
Remove | 使用变量名删除一个Application对象的变量 |
RemoveAll | 删除Application对象的所有变量的内容 |
Set | 使用变量名更新Application对象变量的内容 |
Unlock | 解锁Application对象的变量 |
小结:
类、对象、属性、方法、事件 是学习一种语言需要掌握的基础,不要对它们死记硬背,只需要大致的理清楚它们之间的关系,都有些那些内容,在实际使用中知道查询的方向,用两次就会融入我们的知识网络。我在积累新知探索的路上努力着,荣幸与您分享我的故事~
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/144317.html