《新内置对象》PPT课件.ppt
第六章第六章 内置对象和状态管理内置对象和状态管理 理论部分理论部分回顾q文本类(文本类(Label、TextBox)q超链接控件(超链接控件(Hyperlink)q按钮类(按钮类(Button、LinkButton、ImageButton)q图片类(图片类(Image、ImageMap)q单选类(单选类(RadioButton、RadioButtonList)q复选类(复选类(CheckBox、CheckBoxList)q列表类(列表类(ListBox、DropDownList)q容器类容器类(Panel、Placeholder)q复杂控件(复杂控件(MultiView、View、FileUpload、Wizard、Calendar、Adrotator、Tabel)q验证控件验证控件(RequiredFieldValidator、RangeValidator、RegularExpressionValidator、CompareVlaidator、CustomValidator、ValidationSummary)q用户自定义控件用户自定义控件2学习目标qPage对对象象qRequest 对对象象qResponse 对对象象qServer 对对象象qCookie对象对象qSession 对象对象qApplication 对象对象q 运用运用Global.asax 文件文件3B/S体系结构与内置对象模型xx.aspxServerADO.netCookieSessionApplicationPageRequestResponse4Page对象学习目标q了解ASP.NET页的结构q掌握Page对象的各种事件和属性q理解代码隐藏的概念5ASP.NET页6脚本部分脚本部分脚本部分 服务器端脚本客户端脚本由服务器执行由浏览器执行C#VBJscript7客户端脚本q客户端脚本是页面的一部分客户端脚本是页面的一部分,当用户请求页面时,当用户请求页面时,就将这些脚本发送至浏览器就将这些脚本发送至浏览器q客户端脚本可以客户端脚本可以:q在将某个页面加载至浏览器中时,改变此页面在将某个页面加载至浏览器中时,改变此页面的外观的外观q验证用户在窗体中输入的数据,验证用户在窗体中输入的数据,将通过验证的将通过验证的数据发送至服务器数据发送至服务器 q当触发按钮的点击事件时,在浏览器中显示相当触发按钮的点击事件时,在浏览器中显示相关信息关信息8服务器端脚本q服务器脚本也是页面的一部分,但它不发送至浏览器,服务器脚本也是页面的一部分,但它不发送至浏览器,而是在请求页面之后和在回送至浏览器之前由服务器处而是在请求页面之后和在回送至浏览器之前由服务器处理这些脚本理这些脚本q代代码码可包含在服可包含在服务务器端的器端的 代代码码声明声明块块中,服中,服务务器端代器端代码码声明声明块块必必须须具有具有 runat=“server”属性。属性。q服服务务器端脚本可包含在器端脚本可包含在 显显示示块块中。中。q服务器端脚本可以放在对应的服务器端脚本可以放在对应的.aspx.cs文件中。文件中。9事件处理程序qASP.NET页框架在不同的阶段处理Web窗体页时都可能引发事件,并执行响应事件的事件处理程序q事件处理程序实际上就是一个子程序,执行任何给定事件的相关代码qASP.NET页面因其事件机制而显得格外新颖独特10Web窗体页的生命周期初始化页面阶段阶段引发的事件引发的事件Page_Init加载页面验证事件处理页面卸载Page_LoadValidateFormeventhandlerPage_Unload在页面处理的某些特定阶段,页面会自动触发一些事件。而与服务器控件相关联的其他事件则在服务器端触发并得到处理11Page对象是什么?Page类用于表示一个.aspx文件,也称为Web窗体页每个页面都派生自Page类,并继承这个类公开的所有方法和属性Page类的成员位于命名空间中12Page_Load事件q在加载页面时会触发Page_Load事件qASP.NET 将自动调用 Page_Load 子程序,并执行其中的代码privatevoidPage_Load(objectsender,System.EventArgse)Label1.Text=DateTime.Now.ToString();从此处调用Page_Load事件只要加载页面,就会执行Page_Load事件内的代码13Page.IsPostBack属性2-1q利用利用Page对象的对象的IsPostBack属性,可以检查属性,可以检查.aspx页是否为传递回服务器的页面页是否为传递回服务器的页面 q只有在首次加载页面时只有在首次加载页面时,Page.IsPostBack 属性属性才用于页面的才用于页面的 Load 事件中以执行代码事件中以执行代码 q如果如果 Page.IsPostBack 属性值为属性值为False,则此页面,则此页面为首次加载为首次加载用户界面14Page.IsPostBack属性2-2privatevoidPage_Load(objectsender,System.EventArgse)if(!Page.IsPostBack)lblTime.Text=();privatevoidbtnSubmit_Click(objectsender,System.EventArgse)lblMessage.Text=请确定您填写的信息:+txtName.Text+txtAge.Text+txtHabbit.Text;Page_Load事件如果页面为首次加载,则Page.IsPostBack属性的值是False,并显示日期和时间单击“提交”按钮后,日期和时间都将保持不变15Page对象属性和事件q属性q事件属属 性性说说 明明IsPostBack获获取一个取一个值值,该值该值指示指示该页该页是否正在是否正在为为响响应应客客户户端端回回发发而加而加载载,或者它是否正在被首次加,或者它是否正在被首次加载载和和访问访问IsValid获获取一个取一个值值,该值该值指示指示页验证页验证是否成功是否成功Validators获获取取请请求的求的页页上包含的全部上包含的全部验证验证控件的集合控件的集合事事 件件说说 明明Init 在服务器控件初始化时发生,初始化是控件生存期在服务器控件初始化时发生,初始化是控件生存期的第一步的第一步 DataBinding 在服务器控件绑定到数据源时发生在服务器控件绑定到数据源时发生 Load在服务器控件加载到在服务器控件加载到 Page 对象中时发生对象中时发生Unload在服务器控件从内存中卸载时发生在服务器控件从内存中卸载时发生Disposed在从内存释放服务器控件时发生在从内存释放服务器控件时发生16代码隐藏3-1.aspx文件显示内容HTML,服务器控件静态文本等.aspx.cs文件应用程序逻辑这就是代码隐藏分离17代码隐藏3-2Presentation.aspx表示文件.(Presentation.aspx)代码隐藏文件在代码隐藏文件中定义的事件代码隐藏文件略为复杂。它含有一个未编译的VisualC#类文件18代码隐藏3-3代码隐藏文件(myCodebehind.cs)usingSystem;usingSystem.Web.UI;using;using;publicclassmyCodeBehind:protectedlblMessage;PrivateButton_Click(Objectsender,EventArgse)lblMessage.Text=“您好!继承自Page类从表示文件调用Buttonclick事件单击按钮后执行的功能19代码隐藏的工作原理q代码隐藏的原则是为代码创建一个类,并从代码隐藏的原则是为代码创建一个类,并从ASP.NET Page对象中继承该类对象中继承该类q用于表示内容的页面用于表示内容的页面 Presentation.aspx 就继承就继承自此代码隐藏文件。表示页继承了代码隐藏文件自此代码隐藏文件。表示页继承了代码隐藏文件的所有属性、方法和事件的所有属性、方法和事件。q因为存在继承的这种层次结构,所以代码隐藏文因为存在继承的这种层次结构,所以代码隐藏文件中含有件中含有 Page 类的所有属性、方法和事件,而类的所有属性、方法和事件,而所有这些属性、方法和事件也都存在于表示文件,所有这些属性、方法和事件也都存在于表示文件,即页面文件。即页面文件。q代码隐藏文件无需编译,因为只要请求表示页,代码隐藏文件无需编译,因为只要请求表示页,就会自动编译包含在代码隐藏文件中的类文件。就会自动编译包含在代码隐藏文件中的类文件。20Page对象小结qASP.NET 页文件是含有将在页文件是含有将在 Web 服务器上执行代码的文服务器上执行代码的文件。其扩展名是件。其扩展名是.aspx 或或.ascxqASP.NET页面中使用两种类型的脚本:页面中使用两种类型的脚本:q服务器端脚本服务器端脚本q客户端脚本客户端脚本q事件处理程序实际上就是一个子程序,执行任何给定事件事件处理程序实际上就是一个子程序,执行任何给定事件的相关代码的相关代码q在页面加载时引发在页面加载时引发 Page_Load 事件事件qPage.IsPostback 属性用于检查页面是否为首次加载属性用于检查页面是否为首次加载qASP.NET代码隐藏文件使开发人员可以在代码隐藏文件使开发人员可以在 C#或或 Visual Basic.NET 类中编写控制它们的页的逻辑,这样可与类中编写控制它们的页的逻辑,这样可与 HTML代码清楚地分离开来代码清楚地分离开来21回顾q内置对象q内置对象的组成和相互关系qPage类是什么?内置对象不需要编程者手动创建?内置对象不需要编程者手动创建?内置对象用来实现内置对象用来实现B/S交互?交互?内置对象用来进行状态管理?内置对象用来进行状态管理?Page对象与对象与.aspx文件相关联文件相关联IsPostBack属性做什么用处?属性做什么用处?Page_Load事件在整个事件在整个Page对象对象的生命周期中执行多少次?的生命周期中执行多少次?问题:问题:客户端对于服务器的请求可能是什么样的?服务器客户端对于服务器的请求可能是什么样的?服务器应该如何去响应?服务器都做什么了?应该如何去响应?服务器都做什么了?22学习目标qRequest:获取客户端请求信息qResponse:对客户端进行响应qServer:提供访问服务器资源、进行服务器端处理的途径。23Request与Response服务器服务器域名URL,资源的名称响应这是HTTP请求这是HTTP响应24Request对象学习目标uRequest对象是对象是类。类。Request对象对象获取客户端、服务获取客户端、服务器端环境变量器端环境变量访问表单数据访问表单数据通过通过URL发送发送的查询字符串的查询字符串接收来自客户端接收来自客户端的的Cookie信息信息25Request属性的用法26页面提交数据的方法教师演示教师演示27页面提交表单的方法教师演示教师演示28不同提交方法的比较29ServerVariable属性Request.ServerVariables“环境变量环境变量”30ServerVariables的环境变量名列表环环境境变变量名量名说说明明CONTENT_LENGTH发发送到客送到客户户端的文件端的文件长长度。度。CONTENT_TYPE发发送到客送到客户户端的文件端的文件类类型。型。LOCAL_ADDR服服务务器端的器端的IP地址。地址。REMOTE_ADDR客客户户端端IP地址。地址。REMOTE_HOST客客户户端端计计算机名。算机名。SERVER_NAME服服务务器端器端计计算机名。算机名。SERVER_PORT服服务务器端网站的端口号。器端网站的端口号。31浏览器特性名对应表名称名称说说明明Browser浏览浏览器器类类型。型。Version浏览浏览器版本号。器版本号。MajorVersion浏览浏览器主版本号。器主版本号。MinorVersion浏览浏览器次版本号。器次版本号。Frames逻辑值逻辑值,true表示支持框架功能。表示支持框架功能。Cookies逻辑值逻辑值,true表示支持表示支持Cookie。JavaScript逻辑值逻辑值,true表示支持表示支持JavaScript。ActiveXControls逻辑值逻辑值,true表示支持表示支持ActiveXControl控件。控件。32程序演示q演示RqServerVariables.aspx33Reponse对象学习目标q 对象封装服务器端对客户端请求页面的响应。对象封装服务器端对客户端请求页面的响应。q向客户端输出内容向客户端输出内容q从客户端浏览器创建或获取从客户端浏览器创建或获取 Cookie信息信息q将页面进行重定向将页面进行重定向q对输出内容进行缓存对输出内容进行缓存q对缓冲区内容的操纵对缓冲区内容的操纵Response.Redirect()Response.BufferResponse.Write()Response.CookiesResponse.Clear()Response.Flush()34HttpResponse:常用属性属性名称说明Buffer 指指定定是是否否将将 Web 窗窗体体创创建建的的输输出出存存储储在在 IIS 缓缓存存中中,直到直到处处理完当前理完当前页页面中的所有服面中的所有服务务器脚本器脚本Cache 获得网页的缓存策略(过期时间、保密性设置、变获得网页的缓存策略(过期时间、保密性设置、变化条款等)化条款等)ContentType 在在向向网网页页中中输输出出文文件件的的时时候候比比较较常常用用,主主要要是是指指定定要要发发送送的的文文件件的的文文件件格格式式(类类型型)。(如如 text/xml 或或 image/gif)。默默认认的的 MIME 类类型型是是 text/html。客客户户端端浏浏览览器器从从输输出出流流中中指指定定的的 MIME 类类型型获获得得内内容的容的类类型型CookieHttpResponse 对象用于在客户端创建和写入对象用于在客户端创建和写入Cookie 集合集合Expires 指定指定浏览浏览器中器中缓缓存的存的页页面面过过期之前的期之前的时间时间(以分(以分钟钟为单为单位)如果用位)如果用户户在在页页面面过过期之前返回到期之前返回到该页该页,则则显显示示缓缓存的版本。存的版本。35HttpResponse:常用方法方法方法说说明明Write用于向当前用于向当前 HTTP 响响应应流写入文本,使其成流写入文本,使其成为为返回返回页页面的一部分面的一部分End停止停止处处理至客理至客户户端的端的输输出,返回目前出,返回目前为为止已止已创创建的建的页页面内容。面内容。Redirect将用将用户户从从请请求求页页面重新定向或面重新定向或带带到另一到另一页页面面36程序演示Response.Write1.向页面输出文本,这个方法是使用频率特别高的向页面输出文本,这个方法是使用频率特别高的语句,刚刚大家也看到无数次了。语句,刚刚大家也看到无数次了。Response.Write方法可以向页面输出任意形式的字方法可以向页面输出任意形式的字符串:变量、符串:变量、HTML代码、脚本语言等都可以代码、脚本语言等都可以演示:演示:Response99.aspxResponseWrite.aspxResponseWriteFile.aspx37程序演示页面跳转2.页面重定向,用于页面跳转,不过比较浪费服务页面重定向,用于页面跳转,不过比较浪费服务器的器的CPU时间,尽量少用。时间,尽量少用。演示:演示:Redirect.aspx Teacher.aspx Student.aspx38程序演示Response.End()方法3.有条件结束应用程序,使用有条件结束应用程序,使用Response.End方法,方法,可以根据条件结束后面所有内容的输出。可以根据条件结束后面所有内容的输出。Buffer.aspx39程序演示缓冲区操作4.对缓冲区进行设置和操作。对缓冲区进行设置和操作。需要演示的程序有:需要演示的程序有:Buffer.aspx40HttpServerUtility对象Execute方法和Transfer方法HTML编码方法MapPath方法URLEncode方法方法方法HttpServerUtility类包含处理Web请求的方法41HttpServerUtility对象ExecuteTransferURL 参数指定的页面处理完后,控参数指定的页面处理完后,控制权会返回给先前的页面或调用此制权会返回给先前的页面或调用此方法的页面,并且从此方法调用后方法的页面,并且从此方法调用后的语句继续执行的语句继续执行 URL 参参数数指指定定的的页页面面处处理理完完后后,控控制制权权不不会会返返回回给给先先前前的的页页面面,也也不不会会返返回回给给调调用用此此方方法法的的页页面面,并并且且在新页面完成执行时结束在新页面完成执行时结束 演示:ExcuteTransfer.aspxExecute方法和Transfer方法均会停止当前页面的执行,并将用户带到由此方法的参数URL指定的页面42方法区别qRedirect()方法尽管在服务器端执行,但重定向方法尽管在服务器端执行,但重定向实际发生在客户端,可从浏览器地址栏中看到地实际发生在客户端,可从浏览器地址栏中看到地址变化;而址变化;而Execute()和和Transfer()方法的重定向方法的重定向实际发生在服务器端,在浏览器的地址栏中看不实际发生在服务器端,在浏览器的地址栏中看不到地址变化。到地址变化。qRedirect()和和Transfer()方法执行完新网页后,并方法执行完新网页后,并不返回原网页;而不返回原网页;而Execute()方法执行完新网页后方法执行完新网页后会返回原网页继续执行。会返回原网页继续执行。43区别(续)qRedirect()方法可重定向到同一网站的不同网方法可重定向到同一网站的不同网页,也可重定向到其它网站的网页;而页,也可重定向到其它网站的网页;而Execute()和和Transfer()方法只能重定向到同一网站的不方法只能重定向到同一网站的不同网页。同网页。q利用利用Redirect()方法在不同网页之间传递数据方法在不同网页之间传递数据时,状态管理采用查询字符串形式;而时,状态管理采用查询字符串形式;而Execute()和和Transfer()方法的状态管理方式与方法的状态管理方式与Button按钮的跨网页提交方式相同。按钮的跨网页提交方式相同。44Server.HtmlEncode()q为为了确保所有浏览器均能在了确保所有浏览器均能在 URL 字符串中正确地字符串中正确地传送文本,需要使用传送文本,需要使用 HTML 编码。编码。HTMLEncode 方法正是起这个作用的方法正是起这个作用的q例如,如果输入文本包含例如,如果输入文本包含“”字符,此方法字符,此方法会将这些字符转换为其对等的会将这些字符转换为其对等的 HTML 字符,即分别字符,即分别为为< 和和>,以便浏览器将这些字符正确地显示,以便浏览器将这些字符正确地显示为为“”q演示程序:演示程序:EncodeDecodeaspx.aspx45Server.UrlEncode()方法q如果是要求可靠的如果是要求可靠的 HTTP 传输通过传输通过 URL 将编码文将编码文本从本从 Web 服务器传送到客户端,该怎么办?服务器传送到客户端,该怎么办?q可使用可使用 URLEncode 方法实现此目的。它将文本编方法实现此目的。它将文本编码以便于通过码以便于通过 HTTP 进行可靠的传输进行可靠的传输语法46Server.MapPath()方法MapPath 方法:方法:qWeb 应用程序位于应用程序位于 IIS 根目录下的虚拟目录中根目录下的虚拟目录中q因因此此,我我们们请请求求网网页页时时,引引用用称称为为“虚虚拟拟路路径径”的的虚虚拟拟目目录录路路径径。但但是是经经常常需需要要得得到到 Web 服服务务器器上上的的 Web 资资源的实际物理路径源的实际物理路径q用用 MapPath 方方法法,我我们们可可从从其其虚虚拟拟路路径径得得到到 Web 资资源源(如(如.aspx 页面)的物理路径页面)的物理路径语法MapPath(stringpath)Web服务器上的指定虚拟路径47Server.MapPath()方法q将虚拟路径转化为物理路径将虚拟路径转化为物理路径物理路径:从盘符开始的一个路径字符物理路径:从盘符开始的一个路径字符 例如:例如:C:windowssystem32cmd.exe虚拟路径虚拟路径:是从当前路径开始的路径或从站点的根是从当前路径开始的路径或从站点的根开始路径字符串开始路径字符串 其中:其中:/:表示站点的根;表示站点的根;./:表示当前路径的上一级目录;表示当前路径的上一级目录;./:表示当前路径;表示当前路径;48Server.CreateObject()方法qServer还有一个非常重要的作用还有一个非常重要的作用:创建创建COM对象对象的服务器实例,通过这种方式能够对的服务器实例,通过这种方式能够对ASP.net的的功能进行扩展。功能进行扩展。49小结q传递传递Form表单中的控件值用表单中的控件值用Request.Form 获取值获取值,地址地址栏中传递的参数用栏中传递的参数用 Request.QueryString获取获取q通常用通常用HttpResponse 类的属性类的属性Buffer、Cache、Cookie 和和 Expires来设置站点的一些特性来设置站点的一些特性qHttpResponse 类的常用方法是类的常用方法是 Write()、End()和和 Redirect()qHttpServerUtility 类的类的Execute()和和Transfer()的区别关键的区别关键在于执行后控制权是否返回原先页面、在于执行后控制权是否返回原先页面、URLEncode()和和HTMLEncode()主要用于对主要用于对HTML 标签和标签和URL进行编码,对站点或程序进行编码,对站点或程序的安全具有重要意思,的安全具有重要意思,MapPath()获取物理路径时需要注获取物理路径时需要注意是绝对路径还是相对路径意是绝对路径还是相对路径50状态管理类内置对象qCookie:客户端会话级状态管理内置对象。:客户端会话级状态管理内置对象。qSession:服务器端会话级状态管理内置对象。:服务器端会话级状态管理内置对象。qApplication:服务器端应用程序级状态管理内置:服务器端应用程序级状态管理内置对象。对象。51CookiesCookie在客户端系统中维护客户的个人信息会话会话 Cookie持久性持久性 Cookie52Cookie概述q保存到客户端硬盘或内存中的一小段文本信息,保存到客户端硬盘或内存中的一小段文本信息,如站点、客户、会话等有关的信息。如站点、客户、会话等有关的信息。q与网站关联,而不是与特定的网页关联。与网站关联,而不是与特定的网页关联。q用户访问不同站点时,各个站点都可能会向用用户访问不同站点时,各个站点都可能会向用户的浏览器发送一个户的浏览器发送一个Cookie,浏览器会分别存,浏览器会分别存储所有的储所有的Cookie。53Cookie概述qCookie文本文件存储于文本文件存储于“盘符盘符:Documents and SettingsCookies”文件夹文件夹。qASP.NET提供类来处理提供类来处理Cookie,常用的属性,常用的属性是是Value和和Expires。q每个每个Cookie一般都会有一个有效期限,当用户一般都会有一个有效期限,当用户访问网站时,浏览器会自动删除过期的访问网站时,浏览器会自动删除过期的Cookie。54q会话会话Cookie:没有设置有效期的没有设置有效期的Cookie将不会将不会保存到硬盘文件中,而是作为用户会话信息的保存到硬盘文件中,而是作为用户会话信息的一部分。当用户关闭浏览器时,一部分。当用户关闭浏览器时,Cookie就会被就会被丢弃。这种类型的丢弃。这种类型的Cookie很适合用来保存只需很适合用来保存只需短时间存储的信息,或者保存由于安全原因不短时间存储的信息,或者保存由于安全原因不应写入客户端硬盘文件的信息。应写入客户端硬盘文件的信息。q持久性持久性Cookie:设置了有效期的:设置了有效期的Cookie,将,将被保存到硬盘文件中,在过期之前都是有效的。被保存到硬盘文件中,在过期之前都是有效的。55创建Cookieq方法一:方法一:使用使用Response.Cookies数据集合建立数据集合建立Cookie。Response.CookiesName.Value=“张三张三”;q方法二:方法二:先创建先创建HttpCookie对象,设置其属性,然后通过对象,设置其属性,然后通过()方法添加。方法添加。HttpCookie cookie=new HttpCookie(Name);cookie.Value=张三张三;cookie.Expires=DateTime.Now.AddDays(1);Response.Cookies.Add(cookie);string name=Request.Cookies.Name.Value;56创建和读取会话CookieHttpCookieobjHttpCookie=newHttpCookie(“UserName”,“张三);Response.Cookies.Add(objHttpCookie);新建Cookie将新Cookie添加到Response对象的Cookie集合中创建Cookie读取CookieResponse.Write(Request.Cookies(“UserName).Value);Value属性将Cookie的值作为字符串返回57创建和读取持久性Cookie读取CookieHttpCookieobjHttpCookie=newHttpCookie(“UserName”,“张三);objHttpCookie.Expires=DateTime.Now.AddMinutes(2);Response.Cookies.Add(objHttpCookie);新建Cookie用Cookie的Expires属性将Cookie的过期期限设置为两分钟创建CookieResponse.Write(Request.Cookies(“UserName).Value);58Cookie应用实例q本实例主要实现利用本实例主要实现利用Cookie确认用户是否已确认用户是否已登录,其中登录,其中Cookie.aspx页面只有在用户登录页面只有在用户登录后才能显示。后才能显示。q源程序:源程序:Cookie.aspx q源程序:源程序:CookieLogin.aspx q程序说明:测试时先浏览程序说明:测试时先浏览Cookie.aspx,此时,此时因无用户名因无用户名Cookie信息,页面重定向到信息,页面重定向到CookieLogin.aspx,输入用户名单击确定将,输入用户名单击确定将用户名信息存入用户名信息存入Cookie。关闭浏览器。再次。关闭浏览器。再次浏览浏览Cookie.aspx可看到欢迎信息。可看到欢迎信息。q书上程序演示:书上程序演示:61.aspx59Session对象概述q又称会话状态,典型的应用有储存用户信息、又称会话状态,典型的应用有储存用户信息、多网页间信息传递等。多网页间信息传递等。qSession产生在产生在服务器端服务器端,只能为当前访问的,只能为当前访问的用户服务。用户服务。q以用户对网站的最后一次访问开始计时,当计以用户对网站的最后一次访问开始计时,当计时达到会话设定时间并且期间没有访问操作时,时达到会话设定时间并且期间没有访问操作时,则会话自动结束。如果同一个用户在浏览期间则会话自动结束。如果同一个用户在浏览期间关闭浏览器后再访问同一个网页,服务器会为关闭浏览器后再访问同一个网页,服务器会为该用户产生新的该用户产生新的Session。60Session对象概述优点优点优点优点qSession 对象包含特定于某个用户的信息对象包含特定于某个用户的信息q在用户会话期间可以记录和监视特定于用户的信在用户会话期间可以记录和监视特定于用户的信息息q当会话过期或终止时,服务器就会清除当会话过期或终止时,服务器就会清除 Session 对象对象61Session事件qSession_Start当新用户访问一个应用程序时会激活该事件当新用户访问一个应用程序时会激活该事件qSession_End用户退出应用程序时,就会触发用户退出应用程序时,就会触发 Session_End 事件事件62Session属性Session 事件事件Session_StartSession_End属性说明SessionID包含一个唯一的用包含一个唯一的用户户会会话标识话标识符。符。它用于在会它用于在会话过话过程中跟踪用程中跟踪用户户的的信息。要信息。要检检索索 SessionID,使用,使用 Session.SessionIDTimeOut设设置用置用户户超超时时,即它以分,即它以分钟为单钟为单位指定位指定 Session 对对象在象在释释放放资资源源之前能之前能够够保持保持闲闲置的置的时间时间。用。用户户可可导导航至另一个站点而不用关航至另一个站点而不用关闭该闭该应应用程序。如果用程序。如果设设定了超定了超时时属性,属性,则则无人操作的用无人操作的用户户会会话话可被清除,可被清除,由此由此释释放服放服务务器的器的资资源。源。默默认值为认值为 20 分分钟钟。可通。可通过过在在 ASPX 文件文件中中赋值赋值来更改此来更改此设设置。例如,置。例如,IsNewSession若若该该会会话话是由当前是由当前请请求求创创建的,建的,该该属性将返回属性将返回值值 trueItem获获取或取或设设置会置会话值话值的名称的名称Count获获得会得会话话状状态态集合中的集合中的项项数数63程序演示1q程序需求描述:程序需求描述:1.用户只能在用户只能在SessionLogin.aspx页面中完成登录页面中完成登录以后才能在其他页面上进行操作,否则自动跳转以后才能在其他页面上进行操作,否则自动跳转到到SessionLogin.aspx页面进行登录。页面进行登录。说明:本程序是一个通用应用:一次登录记录登录说明:本程序是一个通用应用:一次登录记录登录状态在其他页中无需在登录;如果没有登录实现状态在其他页中无需在登录;如果没有登录实现自动跳转。自动跳转。代码:代码:SessionLogin.aspx和和Session.aspx页面。页面。64程序演示2q程序需求描述:程序需求描述:1.用户只能在用户只能在62.aspx页面中完成登录以后才能在其页面中完成登录以后才能在其他页面上进行操作,否则自动跳转到他页面上进行操作,否则自动跳转到62.aspx页页面进行登录。面进行登录。说明:本程序是一个通用应用:一次登录记录登录说明:本程序是一个通用应用:一次登录记录登录状态在其他页中无需在登录,根据登录权限的不状态在其他页中无需在登录,根据登录权限的不同设置可用部分和不可用部分;如果没有登录实同设置可用部分和不可用部分;如果没有登录实现自动跳转。现自动跳转。代码:代码:62.aspx和和welcome.aspx页面。页面。65Application对象存储并维护应用程序级的数据Application对象Application 状态状态HttpApplicationState方法集合Application 状态状态由它们表示由它们表示类类66变量分类变量用于在应用程序执行时存储数据应用程序级会话级stringmyname=“张三;Response.Write(“欢迎+myname);67对象级变量protectedvoidApplication_Start(Objectsender,EventArgse)Application.Lock();ApplicationUserNum=0;Application.UnLock();protectedvoidSession_Start(Objectsender,EventArgse)Response.Write(调用Session_Start:会话已开始);Application.Lock();ApplicationUserNum=int.Parse(ApplicationUserNum.ToString()+1;Application.UnLock();protectedvoidSession_End(Objectsender,EventArgse)Response.Write(调用Session_End:会话已结束);Application.Lock();ApplicationUserNum=int.Parse(ApplicationUserNum.ToString()-1;Application.UnLock();68对象级变量3-2private void Page_Load(object sender,System.EventArgs e)/在此处放置用户代码以初始化页面在此处放置用户代码以初始化页面Response.Write(你是第你是第+ApplicationUserNum.ToString()+位访客位访客);69Lock和Unlock方法Lock()Lock()用于防止用户更改Application对象的属性Lock()可用作Application.Lock()UnLock()Unlock()方法用于释放对应用程序变量的锁定UnLock()可用作Application.UnLock()70向应用程序添加、更新和移除项方法方法说说明明Add()向向 Application 状状态态添加新添加新对对象。象。例如,下列代例如,下列代码码会会向向应应用程序状用程序状态态添加添加项项:Application.Add(“Title”,“article board”);或;或 Application(“Title”)=“Article Board”;Clear()从从 Application 状状态态中移除所有中移除所有对对象象 Remove()从从 Application 集合中按名称移除集合中按名称移除项项。例如,下列代。例如,下列代码码移除移除 Title 项项:Application.Remove(Title)HttpApplicationState 方法方法Application对象还提供Get()和Set()方法,可用于按名称或索引获取对象,并相应地更新对象的值71Global.asax 文件文件“Global.asax”q存储所有事件的事件处理程序存储所有事件的事件处理程序q 存储在应用程序的根目录下存储在应用程序的根目录下q 它的位置定义应用程序的限界它的位置定义应用程序的限界q 包含所有应用程序的配置设置包含所有应用程序的配置设置72Global.asax中定义的事件httpApplication类类实例事件事件处理程序Global.asax配置设置存储于文件事件说明Application_Start调用当前应用程序目录(或其子目录)下的第一个ASP.NET页面时触发。Application_End应用程序的最后一个会话结束时触发。用Internet服务管理器管理单元停止Web应用程序时也会触发Application_BeginRequest每次页面请求开始时触发(理想情况下是在页面加载或刷新时)Application_EndRequest每次页面请求结束时(即每次在浏览器上执行页面时)触发Session_Start每次新的会话开始时触发Session