《项目三-WEB应用的状态管理课件.ppt》由会员分享,可在线阅读,更多相关《项目三-WEB应用的状态管理课件.ppt(83页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、应用程序状态管理WebWeb应用程序状态管理应用程序状态管理 湖南信息职业技术学院湖南信息职业技术学院 2 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/主要内容任务1 用户登录实现任务2 网络在线投票任务3 网站计数器实现应用程序状态管理任务任务1 1 用户登录实现用户登录实现 湖南信息职业技术学院湖南信息职业技术学院 4 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/用户登录是所有Web应用系统最基本的功能之一。其目的是为了防止非法用户访问Web应用系统,只有登录成功的用户才能以合法的身
2、份访问Web应用系统。本任务使用Response对象和Request对象来实现简单的用户登录功能。任务场景 湖南信息职业技术学院湖南信息职业技术学院 5 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/湖南信息职业技术学院湖南信息职业技术学院 6 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/3.1 状态管理Web状态管理Web应用本质是无状态的,对页面的每个请求均被视为新请求,且默认情况下,来自一个请求的信息对下一个请求不可用。ASP.NET提供了在服务器上保存页面之间信息的状态管理。通过保
3、存应用程序的信息来维护不同发送过程中的数据。是对同一页或不同页的多个请求维护状态和页信息的过程。湖南信息职业技术学院湖南信息职业技术学院 7 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/服务器端状态管理应用程序状态应用程序状态是一种全局存储机制,可从Web应用程序中的所有页面进行访问。保存应用程序状态使用Application对象会话状态会话状态信息仅供Web应用程序中某个特定会话的用户使用。会话状态是HttpSessionState类的实例,通过Page等类的Session属性公开Cache对象在应用程序级可使用Cache对象来管理状态。
4、服务器端状态管理使用服务器资源来存储状态信息,这类选项的安全性较高。湖南信息职业技术学院湖南信息职业技术学院 8 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/客户端状态管理 客户端状态管理涉及在页中或客户端计算机上存储信息,在各往返行程间不会在服务器上维护任何信息。COOKIECookie是一个文本文件,用来存储保留状态所需的少量文本信息。视图状态是ASP.NET页框架默认情况下用于保存往返过程之间的页和控件值的方法。通过Page类的ViewState属性公开,ViewState属性被作为页的隐藏域进行维护。隐藏域ASP.NET允许将信息存
5、储在HiddenField控件中查询字符串查询字符串是在页面URL的尾部附加的信息 湖南信息职业技术学院湖南信息职业技术学院 9 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/湖南信息职业技术学院湖南信息职业技术学院 10 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/3.2 Response对象常用方法方法说明Clear将缓冲区的内容清除End将目前缓冲区中所有的内容发送至客户端后关闭Flush将缓冲区中所有的数据发送至客户端Redirect将网页重新导向另一个地址Write将数据输出到客
6、户端WriteFile将指定的文件直接写入HTTP内容输出流 湖南信息职业技术学院湖南信息职业技术学院 11 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/Response对象应用向浏览器输出数据在Web开发中使用Response最频繁的语句是显示文本,还可以将HTML标记输出到客户端浏览器,也可输出JavaScript脚本。Response.Write(这是向浏览器输出的字符串);Response.Write(软件技术);Response.Write(alert(欢迎使用ASP.NET);湖南信息职业技术学院湖南信息职业技术学院 12 AS
7、P.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/湖南信息职业技术学院湖南信息职业技术学院 13 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/3.3 Request对象 Request对象主要用于从客户端获取数据,当用户打开WEB浏览器并从网站请求Web页时,Web服务器就收到一个HTTP请求。Request对象是HttpRequest类的一个实例,命名空间为System.Web,它提供对当前页请求的访问,包括标题、Cookie、客户端证书以及查询字符串等。湖南信息职业技术学院湖南信息职业技术学院
8、 14 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/湖南信息职业技术学院湖南信息职业技术学院 15 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/3.3 Request对象常用方法方法说明MapPath将请求的URL中的虚拟路径映射到服务器上的物理路径SaveAs将HTTP请求保存到磁盘 湖南信息职业技术学院湖南信息职业技术学院 16 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/Request对象应用获取表单的数据使用Request对象
9、的Form属性可以获取来自表单的数据,实现信息的提交和处理。例3-1:Form属性的用法。湖南信息职业技术学院湖南信息职业技术学院 17 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/湖南信息职业技术学院湖南信息职业技术学院 18 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/Request对象应用计算机和浏览器的相关数据例3-2:通过Request对象的Browser属性获取客户端浏览器信息在例3-1所示的RequestDemo网站中,添加名为“RequestBrowse.aspx”的We
10、b窗体。为该页添加Page_Load事件处理程序protectedvoidPage_Load(objectsender,EventArgse)HttpBrowserCapabilitiesb=Request.Browser;Response.Write(客户端浏览器信息:+);Response.Write(名称:+b.Browser+);Response.Write(版本:+b.Version+);Response.Write(操作平台:+b.Platform+);Response.Write(是否支持框架:+b.Frames+);Response.Write(是否支持Cookies:+b.C
11、ookies+);湖南信息职业技术学院湖南信息职业技术学院 19 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/用户登录实现任务实施 湖南信息职业技术学院湖南信息职业技术学院 20 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/步骤1新建一个ASP.NET网站步骤2在页面上添加控件,并设计控件属性控件ID控件类型属性名属性值lblTitleLabelText用户登录lblUserNameLabelText用户名:lblUserPwdLabelText密码:txtUserNameTextBox
12、txtUserPwdTextBoxTextModePasswordbtnConfirmButtonText确定btnCancelButtonText取消任务实施 湖南信息职业技术学院湖南信息职业技术学院 21 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/步骤3添加按钮“确定”事件protectedvoidbtnConfirm_Click(objectsender,EventArgse)stringstrUrl=;stringname=txtUserName.Text;stringpwd=txtUserPwd.Text;if(name=xia
13、oli&pwd=admin)/只有当用户名为xiaoli、密码为admin时才能跳转strUrl=Index.aspx?uName=+name+&uPwd=+pwd;Response.Redirect(strUrl);任务实施 湖南信息职业技术学院湖南信息职业技术学院 22 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/步骤4.添加“取消”按钮事件步骤5.添加页面加载事件protectedvoidbtnCancel_Click(objectsender,EventArgse)txtUserName.Text=null;txtUserPwd.T
14、ext=null;protectedvoidPage_Load(objectsender,EventArgse)if(RequestuName!=null&RequestuPwd!=null)Response.Write(RequestuName+,你好!);Response.Write(你的密码是:+RequestuPwd);任务实施 湖南信息职业技术学院湖南信息职业技术学院 23 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/湖南信息职业技术学院湖南信息职业技术学院 24 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我
15、的想法,我的我的CODE*/*/任务1各组为自己的网站添加用户登录页面。如果用户名和密码正确,登录成功,跳转至登录成功页面,页面显示“欢迎XX进入本站点”,当用户名或密码不正确,弹出提示框,提醒用户“用户名或密码不正确”。课堂实践应用程序状态管理任务任务2 2 网络在线投票实现网络在线投票实现 湖南信息职业技术学院湖南信息职业技术学院 26 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/在线投票功能是网站应用程序开发中常用的功能模块。网站可以通过在线投票功能做一些实际性的调查工作。本任务使用Cookie对象和文件的读写操作,实现简单的新闻人物
16、网络在线投票功能。任务场景 湖南信息职业技术学院湖南信息职业技术学院 27 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/湖南信息职业技术学院湖南信息职业技术学院 28 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/3.4 Cookie对象Cookie对象Cookie是WEB服务器保存在客户端计算机上的一段文本,允许一个Web站点在用户的计算机上保存信息并读取它。优点能使站点跟踪特定访问者的访问次数,最后访问者和访问者进入站点的路径。可配置到期规则。不需要任何服务器资源简单性数据持久性 湖南
17、信息职业技术学院湖南信息职业技术学院 29 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/3.4 Cookie对象常用属性常用方法属性说明Name获取Cookie变量的名称Value获取或设置Cookie变量的值Expires设定Cookie的过期时间,默认值为1000毫秒,若设为0,则实时删除CookiePath获取或设置要与当前Cookie一起传输的虚拟路径Version获取或设置Cookie符合HTTP维护状态的版本方法说明Add增加Cookie变量Remove通过Cookie变量名称或索引删除Cookie对象Get通过变量名称或索引得
18、到Cookie的变量值Clear清除所有的Cookie 湖南信息职业技术学院湖南信息职业技术学院 30 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/湖南信息职业技术学院湖南信息职业技术学院 31 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/Cookie对象的应用新建HttpCookie对象添加CookieCookie是HttpCookie类的一个实例,创建HttpCookie对象后,再调用Response.Cookies集合的Add方法来添加Cookie。读取Cookie可通过HttpR
19、equest对象公开的Cookies集合进行访问HttpCookieaCookie=newHttpCookie(pwd);aCookie.Value=admin;aCookie.Expires=DateTime.Now.AddDays(1);Response.Cookies.Add(aCookie);/将Cookie添加到Cookies集合中stringname;if(Request.CookiesuName!=null)name=Request.CookiesuName.Value;湖南信息职业技术学院湖南信息职业技术学院 32 ASP.NET ASP.NET 程序设计程序设计/*/*我的想
20、法我的想法,我的我的CODE*/*/Cookie对象的应用编写多值Cookie在一个Cookie中存储多个名称/值对,名称/值对称为子键。使用带有子键的Cookie,可以将相关或类似的信息放在一个Cookie中。直接添加多值Cookie例:编写一个多值Cookie用来存储用户名和密码两个信息。Response.CookiesuserInfouName=xiaoli;Response.CookiesuserInfopwd=admin;Response.CookiesuserInfo.Expires=DateTime.Now.AddDays(1);湖南信息职业技术学院湖南信息职业技术学院 33 A
21、SP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/Cookie对象的应用编写多值Cookie在一个Cookie中存储多个名称/值对,名称/值对称为子键。使用带有子键的Cookie,可以将相关或类似的信息放在一个Cookie中。直接添加多值Cookie例:编写一个多值Cookie用来存储用户名和密码两个信息。Response.CookiesuserInfouName=xiaoli;Response.CookiesuserInfopwd=admin;Response.CookiesuserInfo.Expires=DateTime.Now.AddDay
22、s(1);湖南信息职业技术学院湖南信息职业技术学院 34 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/Cookie对象的应用创建HttpCookie对象来添加读取Cookie值读取多值Cookie的方法和读取单值Cookie类似,只需要访问Cookie的子键值即可。HttpCookieaCookie=newHttpCookie(userInfo);aCookie.ValuesuName=xiaoli;aCookie.Valuespwd=admin;aCookie.Expires=DateTime.Now.AddDays(1);Respons
23、e.Cookies.Add(aCookie);stringname;if(Request.CookiesuserInfo!=null)if(Request.CookiesuserInfouName!=null)name=Request.CookiesuserInfouName;湖南信息职业技术学院湖南信息职业技术学院 35 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/Cookie对象的应用例3-3:利用Cookie对象实现用户登录的状态管理。首先,在任务一的基础上添加复选框 湖南信息职业技术学院湖南信息职业技术学院 36 ASP.NET A
24、SP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/Cookie对象的应用为“确定”按钮添加单击事件protectedvoidbtnConfirm_Click(objectsender,EventArgse)stringname=txtUserName.Text;stringpwd=txtUserPwd.Text;if(name=xiaoli&pwd=admin)if(chkState.Checked)Response.CookiesuserInfouName=name;Response.CookiesuserInfouPwd=pwd;Response.Cookie
25、suserInfo.Expires=DateTime.Now.AddDays(14);Response.Redirect(Index.aspx);湖南信息职业技术学院湖南信息职业技术学院 37 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/Cookie对象的应用当复选框chkState被选中时,创建多值Cookie,并设置其有效期,为Login.aspx添加Page_Load事件protectedvoidPage_Load(objectsender,EventArgse)stringname=;stringpwd=;if(Requestuse
26、rInfo!=null&Request.CookiesuserInfouName!=null)name=Request.CookiesuserInfouName;pwd=Request.CookiesuserInfouPwd;if(name=xiaoli&pwd=admin)Response.Redirect(Index.aspx);湖南信息职业技术学院湖南信息职业技术学院 38 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/Cookie对象的应用修改Index.aspx页的Page_Load事件Win 7中,Cookie文件保存在“C:Us
27、erslxhAppDataRoamingMicrosoftWindowsCookies”中的“lxhlocalhost1.txt”文件中。Windows XP中,Cookie文件保存在“C:Documents and SettingsAdministratorCookies”protectedvoidPage_Load(objectsender,EventArgse)if(Request.CookiesuserInfo!=null)stringname=Request.CookiesuserInfouName;stringpwd=Request.CookiesuserInfouPwd;Resp
28、onse.Write(name+,你好!);Response.Write(你的密码是:+pwd);湖南信息职业技术学院湖南信息职业技术学院 39 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/Cookie对象的应用修改Cookie修改Cookie就是创建具有新值的同名Cookie,并发送到浏览器上以覆盖客户端上旧版本的Cookie。例:假设已经创建了一个名为count的Cookie,用于记录请求页面的次数,每次累加1。intcount;if(Request.Cookiescount=null)count=0;elsecount=int.Par
29、se(Request.Cookiescount.Value);count+;Response.Cookiescount.Value=count.ToString();Response.Cookiescount.Expires=DateTime.Now.AddDays(1);湖南信息职业技术学院湖南信息职业技术学院 40 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/Cookie对象的应用删除Cookie删除Cookie采用浏览器来完成。要在客户端创建一个与要删除的Cookie同名的新Cookie,并将该Cookie的过期日期设置为早于当前时间
30、即可。例如:HttpCookieaCookie;stringcookieName;intmaxNum=Request.Cookies.Count;for(inti=0;imaxNum;i+)cookieName=Request.Cookiesi.Name;aCookie=newHttpCookie(cookieName);aCookie.Expires=DateTime.Now.AddDays(-1);Response.Cookies.Add(appCookie);湖南信息职业技术学院湖南信息职业技术学院 41 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的
31、CODE*/*/3.5 Server对象Server对象是HttpServerUtility类的实例,它提供对服务器上的方法和属性的访问功能常用属性常用方法属性说明MachineName获取服务器的计算机名称ScriptTimeout获取或设置请求超时方法说明CreateObject创建服务器组件的实例HtmlEncode将HTML编码应用到指定的字符串HtmlDecode对已被编码的消除Html无效字符的字符串进行解码MapPath将指定的虚拟路径,映射为物理路径UrlEncode将URL编码规则,包括转义字符,应用到字符串UrlDecode对字符串进行解码Execute使用另一个页面执行当
32、前请求Transfer终止当前页面的执行,并为当前请求开始执行新页面 湖南信息职业技术学院湖南信息职业技术学院 42 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/3.5 Server对象的应用获取服务器的信息Server.MapPath方法的使用该方法可以将指定的虚拟路径映射为物理路径。“/”:返回Web应用程序的根目录所在的路径“./”:从当前目录开始寻找上级目录Response.Write(Server.MachineName+);/输出服务器的名称Response.Write(Server.ScriptTimeout);/输出服务器的
33、请求超时Response.Write(Server.MapPath(default.aspx);湖南信息职业技术学院湖南信息职业技术学院 43 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/3.5 Server对象的应用浏览器中的字符编码在ASP.NET3.5中,默认编码是UTF-8。通常使用HtmlEncode和HtmlDecode方法进行编码和解码。例3-6:Server对象HtmlEncode和HtmlDecode方法示例。编码:解码:protectedvoidPage_Load(objectsender,EventArgse)stri
34、ngstr=湖南信息职院;Label1.Text=Server.HtmlEncode(str);Label2.Text=Server.HtmlDecode(Label1.Text);湖南信息职业技术学院湖南信息职业技术学院 44 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/3.6 文件读写在Web应用开发,经常要使用文件读写。当存储的信息比较小的时候,就不必为这些数据建立数据库来访问,以提高数据访问的效率。.NET Framework使用流模型来读写文件数据。File类File类提供用于创建、复制、删除、移动和打开文件的静态方法。File类
35、不用创建类的实例,只需通过调用其静态方法执行文件操作。常用方法 方法说明CreateText创建或打开一个写入UTF-8编码的文本文件OpenText打开现有UTF-8编码文本文件以进行读取Exists确定指定的文件是否存在AppendText它将UTF-8编码文本追加到现有文件 湖南信息职业技术学院湖南信息职业技术学院 45 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/3.6 文件读写 例:打开应用程序根目录下名为“test.txt”的文本文件,如果文件不存在,则创建该文件。if(Server.MapPath(test.txt)Respo
36、nse.Write(文件存在);(Server.MapPath(test.txt);elseResponse.Write(文件不存在);(Server.MapPath(test.txt);湖南信息职业技术学院湖南信息职业技术学院 46 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/3.6 文件读写StreamReader类StreamReader类用于实现从数据流中读取字符。StreamReader类的常用方法例:方法说明Read读取输入流中的下一个字符或下一组字符ReadLine从当前流中读取一行字符并将数据作为字符串返回ReadToEnd
37、从流的当前位置到末尾读取流Peek返回下一个可用的字符,但不使用它Close关闭StreamReader对象和基础流,并释放与读取器关联的所有系统资源StreamReadersr=(Server.MapPath(test.txt);while(sr.Peek()!=-1)Response.Write(sr.ReadLine()+);sr.Close();湖南信息职业技术学院湖南信息职业技术学院 47 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/3.6 文件读写StreamWrite类StreamWrite类实现向数据流中写入字符。Strea
38、mWrite类的常用方法例:向指定的文本文件test.txt中写入字符string=Server.MapPath(test.txt);StreamWritersw=newStreamWriter(,false);stringstr=Web应用程序开发;sw.WriteLine(str);sw.Close();方法说明StreamWriter使用编码和缓冲区大小,初始化StreamWriter类的新实例。已重载Write写入指定的字符流WriteLine写入指定的字符串,后跟行结束符Close关闭StreamWrite对象和基础流 湖南信息职业技术学院湖南信息职业技术学院 48 ASP.NET
39、ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/网络在线投票任务实施 湖南信息职业技术学院湖南信息职业技术学院 49 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/步骤1新建一个ASP.NET网站步骤2在页面上添加控件,并设计控件属性任务实施 湖南信息职业技术学院湖南信息职业技术学院 50 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/步骤3设计文本文件存储投票信息的格式步骤4 定义读票数文件的方法 getVoteprotectedvoidgetVote()
40、string=Server.MapPath(vote.txt);StreamReadersr=();while(sr.Peek()!=-1)stringstr=sr.ReadLine();stringstrVote=str.Split(|);foreach(stringssinstrVote)count.Add(int.Parse(ss);sr.Close();任务实施 湖南信息职业技术学院湖南信息职业技术学院 51 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/步骤5定义写票数文件的方法 putVoteprotectedvoidputVot
41、e()string=Server.MapPath(vote.txt);StreamWritersw=newStreamWriter(,false);stringstr=count0.ToString();for(inti=1;icount.Count;i+)str+=|+counti.ToString();sw.WriteLine(str);sw.Close();任务实施 湖南信息职业技术学院湖南信息职业技术学院 52 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/步骤6 判定Cookie,确定是否投票合法protectedvoidPage_
42、Load(objectsender,EventArgse)lblView.Text=;HttpCookiegetCookie=Request.Cookies“Vote”;if(getCookie=null)lblState.Text=你还未投票;elselblState.Text=你已经投过票了;getVote();/读取vote.txt文件任务实施 湖南信息职业技术学院湖南信息职业技术学院 53 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/步骤7 投票按钮btnVote的单击事件代码设计protectedvoidbtnVote_Click
43、(objectsender,EventArgse)if(rbtlVote.SelectedIndex!=-1)HttpCookiegetCookie=Request.CookiesVote;if(getCookie=null)/没有投过票intk=rbtlVote.SelectedIndex;countk=int.Parse(countk.ToString()+1;putVote();/修改后的票数写入文件HttpCookievCookie=newHttpCookie(Vote);/创建CookievCookie.Value=vote;vCookie.Expires=DateTime.Now.
44、AddDays(30);Response.Cookies.Add(vCookie);/写CookieResponse.Write(alert(投票成功!););elseResponse.Write(alert(你已经投过票了,不能重复投!););elseResponse.Write(alert(请选择投票项!););任务实施 湖南信息职业技术学院湖南信息职业技术学院 54 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/步骤8当用户单击查看按钮btnView时,则显示各用户的票数信息。protectedvoidbtnView_Click(obj
45、ectsender,EventArgse)lblView.Text=各候选人票数:;for(inti=0;irbtlVote.Items.Count;i+)lblView.Text+=rbtlVote.Itemsi.Value+:+counti+票+;任务实施 湖南信息职业技术学院湖南信息职业技术学院 55 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/任务1各组修改自己的网站的用户登录,添加用户登录的状态管理,可以设置登录信息保存一天,一周,一个月。任务2为各组网站添加热点问题在线投票功能,并可以查看投票结果。课堂实践应用程序状态管理任务任
46、务3 3 网站计数器的实现网站计数器的实现 湖南信息职业技术学院湖南信息职业技术学院 57 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/网站计数器是Web应用开发中的常用功能之一,它用来记录一个站点被访问的情况,包括当前在线人数和网站总访问人数两个方面的统计。本任务通过Session对象、Application对象及Global.asax配置文件的综合运用,实现网站计数器的功能。任务场景 湖南信息职业技术学院湖南信息职业技术学院 58 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/Sess
47、ion对象Session对象的常用属性和方法Session对象的应用Application对象Application对象的常用属性和方法Application对象的应用Global.asax文件配置创建Global.asax配置文件Global.asax配置文件的应用知识要点 湖南信息职业技术学院湖南信息职业技术学院 59 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/3.7 Session对象Session对象在服务器端存储特定的用户会话所需的信息,它是HttpSessionState类的一个实例。当多个用户使用同一个应用程序时,每个用户都
48、将拥有各自的Session对象,且这些Session对象相互独立,互不影响。Session对象的属性集合、属性说明Contents确定指定会话的值或遍历Session对象的集合SessionID标识每一个Session对象TimeOut设置Session会话的超时时间,默认值为20分钟 湖南信息职业技术学院湖南信息职业技术学院 60 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/3.7 Session对象Session对象的方法方法说明Add创建一个Session对象Abandon结束当前会话并清除对话中的所有信息。如果用户重新访问页面,则重
49、新创建会话Remove删除会话集合中的指定项RemoveAll清除所有Session对象Clear清除所有的Session对象变量,但不结束会话 湖南信息职业技术学院湖南信息职业技术学院 61 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/Session对象的应用 设置和使用Session对象设置Session使用键值对使用该对象Add方法访问SessionSession变量名=值;SessionuName=张老三“;Session.Add(uName,张老三);If(SessionuName!=null)stringstrVipName=S
50、essionuName.ToString();湖南信息职业技术学院湖南信息职业技术学院 62 ASP.NET ASP.NET 程序设计程序设计/*/*我的想法我的想法,我的我的CODE*/*/Session对象的应用 例3-6:使用Session实现用户登录改写index.aspx页的Page_Load事件protectedvoidbtnConfirm_Click(objectsender,EventArgse)stringname=txtUserName.Text;stringpwd=txtUserPwd.Text;if(name=xiaoli&pwd=admin)SessionuName=