1、WEB 应应 用 开开 发发单元单元5 5:内置对象:内置对象任务5:网站计数器(3)主 要 内 容Cookie对象的使用1Application对象的使用2学习目标掌握Cookie对象的使用方法掌握Application对象的使用方法技术应用的背景 基于B/S结构的Web 窗体是运用 HTTP 协议,而HTTP协议是无状态的,即它们不自动指示序列中的请求是否全部来自相同的客户端,或者单个浏览器实例是否一直在查看页面或站点。ASP.NET提供了很多状态管理机制,如:多个可使用的内置对象,它们各有各的特点。技术应用的背景 基于B/S结构的Web 窗体是运用 HTTP 协议,而HTTP协议是无状态
2、的,即它们不自动指示序列中的请求是否全部来自相同的客户端,或者单个浏览器实例是否一直在查看页或站点。ASP.NET提供了很多状态管理机制,如:多个可使用的内置对象,它们各有各的特点。一、任务7任务描述:任务描述:统计网站当前在线人数,如下图所示。Cookie对象用来保存特定的用户相关的数据,这是HttpCookie类的实例。信息保存在客户端,每次客户端发出请求时都会把Cookie一起发送到服务器,服务器每次响应客户端请求时重新把Cookie发送到客户端保存。lCookie只能保存字符串类型的数据。lCookie也有默认的生命周期,默认关闭浏览器时Cookie消失。也可以手动设置最大可设置成50
3、年。二、基本知识与技能内置对象CookieResponse.CookiesResponse.Cookies“uname”.Value=“uname”.Value=“张张三三;string str=string str=Request.CookiesRequest.Cookiesuname.Value;uname.Value;Response.Write(str);Response.Write(str);Application是HttpApplicationState类的实例。Application和 Session存储的数据类型(任意类型)和存储的位置(服务器上)一样,不同的是Applicat
4、ion中的数据可以由网站中的所有用户来设置或者获取。并且存放的数据没有时间期限。除非服务器重启或手动删除。名称使用范围存储位置存放的数据类型生命周期默认手动设置Session特定用户服务器Object20分钟可以Cookie特定用户客户端String关闭浏览器可以Application所有用户服务器Object应用程序可以二、基本知识与技能内置对象Application%int applicationCount=1;/计数器 int sessionCount=1;if(Application“aCount”=null)Application“aCount”=1;else application
5、Count=(int)Application“aCount”+1;ApplicationaCount=applicationCount;if(Session sCount=null)SessionsCount=1;else sessionCount=(int)SessionsCount+1;SessionsCount=sessionCount;Response.Write(当前Appliction被访问的有+applicationCount+次了);Response.Write(当前Session被访问的有+sessionCount+次了);%实例13:Application与Session对
6、比拓展知识 Global.asax文件 Global.asax文件定义了一些有关项目的全局性事件。在其中可以编写响应或http模块引发的应用程序级别的事件处理代码。通常也把内部对象的初始化代码放在这些事件处理程序中。(系统自动生成的事件代码框架不全,用户可以根据需要手动添加)Global.asax文件提供的事件代码框架:void Application_Start(object sender,EventArgs e)/在应用程序启动时运行的代码 void Application_End(object sender,EventArgs e)/在应用程序关闭时运行的代码 void Applicat
7、ion_Error(object sender,EventArgs e)/在出现未处理的错误时运行的代码 void Session_Start(object sender,EventArgs e)/在新会话启动时运行的代码 void Session_End(object sender,EventArgs e)/在会话结束时运行的代码。注意:只有在 Web.config 文件中的 /sessionstate 模式设置为InProc 时,才会引发 Session_End 事件。/如果会话模式设置为 StateServer 或 SQLServer,则不会引发该事件 拓展知识 Global.asax文
8、件1.Application_start1.Application_start事件事件 应用程序启动时触发此事件,此事件在程序的生命周期中仅被触发一次。通常可将所有供客户端共享的内部对象初始化代码入在这里。注意不可将这些初始化代码放在首页的Page_Load事件中,因为这样会导致每当首页被加载时都会重新初始化这些对象,将这些对象此前的值丢弃。应用程序启动时也会触发一次Session_Start事件。先触发Application_Start事件,再触发Session_Start事件。在程序的生命同期中Application_Start事件仅被触发一次,而Session_Start事件可多次被触发
9、。2.Application_End2.Application_End事件事件 应用程序关闭时触发Application_End事件,此事件在程序的生命周期中仅被触发一次。当程序结束时,会自动释放应用程序的内存,若应用程序还占用了系统其他资源可在这里编写代码释放。拓展知识 Global.asax文件3.Session_Start.Session_Start事件事件 一个新的客户端请求应用程序某个页面时触发Session_Start事件。在应用程序的生命周期中,不断有新的客户端对应用程序提出请求,Session_Start事件会被反复触发。对特定客户端在各个页面中共享的内部对象的初始化代码放在这
10、里比较合适。因为从某个客户端访问本应用程序开始,一直到该用户关闭浏览器为止,这个初始化仅被执行一次。4.Session_End.Session_End事件事件 Session超时或Session被关闭时执行Session_End事件,当特定的客户端用户访问本应用程序开始,Session_Start事件被触发,当该用户转向其他应用的URL时,应用程序并没有结束这个Session,当从其他应用程序返回到本应用程序中时,保存在Session中的数据仍然有效,直到用户关闭浏览器为止。一般可以通过Session超时来限制用户离开本应用程序。当设定的超时时间到时Session_End事件被激发。拓展知识
11、Global.asax文件操作步骤:1.在站点下新建一个Global.asax文件(1)设一个人数计数器并初始化为0(2)会话开始时计数器加1(3)会话结束计数器减1三、任务的实施void Application_Start(object sender,EventArgs e)Applicationuser_count=0;void Session_Start(object sender,EventArgs e)Application.Lock();Applicationuser_count=(int)Applicationuser_count+1;Application.UnLock();v
12、oid Session_End(object sender,EventArgs e)Application.Lock();Applicationuser_count=(int)Applicationuser_count-1;Application.UnLock();Global.asax2.编写代码protected void Page_Load(object sender,EventArgs e)lblCount.Text=本站当前有:+Applicationuser_count.ToString()+位访问者;3新建一个页面Task7.aspx,在页面上显示计数器的结果在页面添加一个Label标签,将id属性改为=lblCount 4运行并观察结果四、小结 学习了Cookie对象的使用方法 学习了Application对象的使用方法 学习了Global.asax文件的使用方法 本次学习的主要内容能保存页面的一些相关本次学习的主要内容能保存页面的一些相关信息,还可以实现页面间信息的传递的功能。信息,还可以实现页面间信息的传递的功能。