您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > web应用程序设计第7章
11.状态管理概述2.状态管理的分类3.状态管理的使用21、状态管理状态:同一页面或不同页面的多个请求,其中共同的信息。状态管理:处理上述信息的过程。使用状态管理的场合:◦电子商务网站:保存用户选定的商品等内容◦同一页面的往返过程中状态的保存,或在不同的页面之间保存状态31.状态管理有状态:在系统的处理过程中要保留一些信息无状态:协议对于事务处理没有记忆能力,每次请求都是独立的连接,不需要在每个请求之间共享数据等等。HTTP协议是无状态协议。如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。4姓名请输入您的登录信息:John提交ChenWeb服务器Login.aspxLogin.aspxWeb服务器HelloJohnChenGreetings.aspx请输入您的登录信息:John提交ChenHelloGreetings.aspx我忘记您了!!姓名无状态管理有状态管理隐藏域HiddenField例如:asp:HiddenFieldID=hUserrunat=server/asp:TextBoxID=txtNamerunat=server/程序中:hUser.Value=txtName.Text;视图状态ViewState◦视图状态是一个字典对象,通过Page.ViewState公开◦对应于inputtype=“hidden”name=“__VIEWSTATE”value=“……”/程序中:ViewState[xxx]=HelloWorld查询字符串QueryStringResponse对象及其应用Request对象及其应用Server对象及其应用(1)常用属性:◦Cookies:获取响应Cookie集合(2)常用方法◦BinaryWrite:输出二进制流◦ClearContent:清空输出缓冲区流◦Close:关闭到客户端的套接字连接◦End:发送当前缓冲区流并停止该页的执行◦Flush:发送当前缓冲区流◦Redirect:重定向到新的URL◦Write|WriteFile:输出指定文本或将指定的文件(3)Response对象的应用:操作演示实例7-1(1)常用属性:Cookies|Files|Form|QueryStringHttpMethod|Headers|ContentLength|TotalBytesFilePath|Path|PhysicalApplicationPath|PhysicalPath|UrlUserHostAddress|UserHostName|BrowserClientCertificate|IsAuthenticated|IsSecureConnection(2)常用方法:MapPathSaveAs(3)Request对象的应用:例7_2(1)常用属性◦MachineName:获取服务器的计算机名称◦ScriptTimeout:获取和设置请求超时值(以秒计)(2)常用方法◦Execute:在当前请求的上下文中执行指定的页。◦HtmlEncode:对字符串进行HTML编码,以消除无效字符◦HtmlDecode:对HTML字符串进行解码。◦MapPath:将虚拟路径映射为物理路径。◦Transfer:终止当前页的执行,并执行指定的新页。(3)Server对象的应用:例7_31)Machine.config文件◦每个Web服务器上只有一个Machine.config文件◦存储本服务器上的针对所有Web应用程序的设置。2)Web.config文件(ASP.NET阻止客户端访问该文件)◦一种XML文档,可在Web应用程序的根目录或子目录中创建。3)配置文件的继承规则◦应用程序级的配置从服务器级的Machine.config文件继承设置;◦目录级的配置从应用程序级的Web.config继承设置;◦当配置发生冲突时,最低级别的设置覆盖继承来的设置。例7_41)保存数据的技巧◦在Web.config文件的appSettings节中添加键/值对◦基本格式:appSettingsaddkey=键名value=值//appSettings2)检索数据的技巧◦利用ConfigurationSettings类的AppSettings检索◦格式:ConfigurationSettings.AppSettings[键名]12服务器端状态管理客户端状态管理应用程序状态•Web应用程序的所有用户都可以访问该信息Cookie•使用文本文件存储信息来维护状态会话状态•只有特定会话中的用户可以访问该信息查询字符串•附加到页的URL末尾的信息数据库•在某些情况中,希望使用数据库来维护Web站点上的状态需要编写大量的代码,且安全性较差,不推荐使用13服务器端状态管理的特点◦与客户端状态管理相比,具有更高的安全性,需要使用更多的Web服务器资源◦可通过应用程序状态(Application)、会话状态(Session)和数据库保存会话状态来实现Web服务器客户端计算机应用程序和会话变量SessionID14应用程序状态管理◦使用应用程序状态来保存每个活动Web应用程序的值◦该信息对整个应用程序的所有页面都是可见的◦使用键/值词典结构存储应用程序变量◦常用于存储多个会话共享的、不经常改变的信息优点:易于实现、全局范围缺点:全局范围、持久性、资源要求Application对象的成员:◦常用属性:Count:返回应用程序状态集合中的对象的个数。IsReadOnly:指示应用程序状态集合是否为只读的。◦常用方法:Add|Remove|RemoveAt|ClearLock:锁定Application对象,防止并发访问。UnLock:取消对Application对象的锁定。Application对象的使用:例7-5持久保存应用程序状态:例7-616会话状态◦会话:客户端与Web服务器之间的连接◦使用会话状态保存每个活动Web应用程序会话的值◦会话状态的范围限于当前的浏览器会话◦使用键/值词典结构存储会话变量◦可扩展性较好:可以将会话信息存储在Cookie中、进程外服务器中或SQLServer中◦使用SessionID标识不同的会话不同的用户有不同的会话状态,同一用户在退出后返回,也将有不同的会话状态17会话状态管理◦优点:易于实现、具有会话特定的事件、持久性、平台可缩放性和可用于不支持HTTPCookie的浏览器◦缺点:可能降低服务器性能(1)常用属性:◦Count|IsReadOnly|IsNewSession|SessionID◦IsCookieless:表示会话ID是否存储在HTTPCookie中。◦Timeout:设置会话失效时间(默认20分钟)(2)常用方法:◦Abandon:取消当前会话。◦Add|Remove|RemoveAt|ClearSession对象的使用◦注意:会话变量不存在并发访问的问题,因此不需要锁定Session对象◦例7-719客户端状态管理◦不如服务器端状态管理选项安全◦不如服务器端管理选项可靠◦可存储的信息量可能受到限制使用Cookie维护状态◦持久性Cookie◦临时性的或非持久性的CookieWeb服务器客户端计算机Cookie用户可以删除Cookie恶意的用户可通过某些方法来“盗取”Cookie并读取其中的内容20一个Web应用程序只有一个Global.asax文件位置:ASP.NET应用程序的虚拟根目录中用来处理应用程序级事件和会话事件如果不定义Global.asax文件,ASP.NET页框架假设您未定义任何应用程序或会话事件处理程序不能直接通过URL请求Global.asax文件ASP.NETWeb服务器客户端ASP.NETHTTP运行时环境IISApplication_BeginRequestApplication_AuthenticateRequestApplication_AuthorizeRequestApplication_ResolveRequestCacheApplication_AquireRequestStateApplication_PreRequestHandlerExecuteApplication_EndRequestApplication_UpdateRequestCacheApplication_ReleaseRequestStateApplication_PostRequestHandlerExecute页面执行过程请求响应22初始化应用程序/会话变量◦Global.asax文件◦或其他地方初始化变量使用应用程序/会话变量23在Global.asax中初始化变量•Web应用程序的所有用户共享Application对象存储的信息•Session对象只存储特定用户会话的信息protectedvoidApplication_Start(Objectsender,EventArgse){Application[NumberofVisitors]=0;Session[CurrentVistitorNum]=1;}24设置会话和应用程序变量读取会话和应用程序变量Session[BackColor]=blue;Application.Lock();Application[NumberOfVisitors]=(int)Application[NumberOfVisitors]+1;Application.UnLock();strBgColor=(string)Session[BackColor];lblNbVisitor.Text=Application[NumberOfVisitors].ToString();25会话变量具有一定的生存期◦默认情况下,用户在20分钟内没有请求页面,会话会超时在Web.config文件中更改会话生存期应用程序变量一直保存到Application_End事件被触发configurationsystem.websessionStatetimeout=10//system.web/configuration26Cookie概念使用Cookie保存会话数据从Cookie中检索信息在ASP.NET中,Cookie是随着HTML文档一起发送到客户端的数据信息,它属于某个特定的站点。浏览器负责接收Cookie,并自动将其存储到磁盘文件,或浏览器所在的内存中。当客户端再次访问站点时,Cookie随URL请求一起自动发送给服务器。使用Cookie的优点:◦可以设置过期规则,过期时浏览器会自动删除Cookie信息。◦Cookie是存储在客户端的数据,不需要任何服务器资源。◦Cookie信息以磁盘文件的形式保存,可以持久保存。使用Cookie的缺点:◦Cookie信息量有限制。每个Cookie一般不能超过4KB,且最多20个Cookie。◦浏览器具有禁用Cookie的功能,因此Cookie是不可靠的。◦用户可能会篡改Cookie信息,从而导致安全隐患。ASP.NET使用HttpCookie来封装CookieHttpCookie对象常见属性有:◦Value:获取或设置单个Cookie值(string型)◦Expires:过期日期和时间(DateTime型)◦Values:一个Cookie对象所包含的键/值对的集合发送Cookie到客户端的原理①把HttpCookie对象添加到Response.Cookies中②ASP.NET通过IIS自动把Cookie发送给客户端③浏览器收到Cookie后自动写入磁盘例7-8/7-929HttpCookieobjCookie=newHttpCookie(myCookie);DateTimenow=DateTime.Now;objCookie.Values.Add(Time,now.ToString());objCookie.Values.Add(
本文标题:web应用程序设计第7章
链接地址:https://www.777doc.com/doc-2855656 .html