《session对象和application对象》由会员分享,可在线阅读,更多相关《session对象和application对象(24页珍藏版)》请在金锄头文库上搜索。
1、Session对象和Application对象,1. Session的工作原理 当用户请求一个ASP.NET页面时,系统将自动创建一个Session(会话),退出应用程序或关闭服务器时该会话撤销。系统在创建会话时将为其分配一个长长的字符串(SessionID)标识,以实现对会话进行管理和跟踪。该字符串中只包含URL中所允许的ASCII字符。SessionID具有的随机性和惟一性保证了会话不会冲突,也不会被怀有恶意的人利用新SessionID推算出现有会话的SessionID。,Session对象,利用Session对象可以在用户访问某个页面时存储一些属于该用户的信息,当用户浏览器跳转到其他页面
2、时仍可访问保存在服务器端的用户信息。 例如:用户A输入相应的用户名和密码后登录某论坛,那么用户名和密码就被保存在Session对象中,当用户离开登录页面执行“发帖”或“回复”操作时,程序会从Session对象中读取前面保存的用户名和密码,已确定是否有足够的权限执行当前操作。 注意:在ASP.NET中使用Session对象时,必须保证页面的Page指令中EnableSessionState属性值设置为True或Readonly.,Session对象,2 Session对象的常用属性,Session对象,3 Session对象的常用方法,Session对象,4 Session对象的常用事件 Ses
3、sion对象的事件 Session对象有以下两个事件: 1) Start事件:在创建会话时发生。 2) End事件:在会话结束时发生。需要说明的是,当用户在客户端直接关闭浏览器退出Web应用程序时,并不会触发Session_End事件,因为关闭浏览器的行为是一种典型的客户端行为,是不会被通知到服务器端的。Session_End事件只有在服务器重新启动、用户调用了Session_Abandon()方法或未执行任何操作达到了Session.Timeout设置的值(超时)时才会被触发。,Session对象,5 Session对象的基本应用 1) 保存信息 Session“对象名”=变量|常量|字符串
4、表达式 例: Session“num”=Session“num”+1; Session“Addr”=TextBox1.text; Session“name”=“张民”;,Session对象,5 Session对象的基本应用 1) 保存信息 Session“对象名”=变量|常量|字符串表达式 2) 读取信息 变量名=Session“对象名” 例: ReadNum=Convert.ToInt32(Session“num”); TextBox1.Text=Session“Addr.toString();,Session对象,5 Session对象的基本应用 1) 保存信息 Session“对象名”=
5、变量|常量|字符串表达式 2) 读取信息 变量名=Session“对象名” 3)设置页面有效期 Session.Timeout=60;(单位为分钟),Session对象,例题: 向Session对象中存入数据的方法十分简单,下面的语句使用户单击按钮时将2个字符串分别存入2个Session对象中。 protected void Button1_Click(object sender, EventArgs e) Session“myval1“ = “这是Session传递的数据1“; string strVal2 = “这是Session传递的数据2“; Session“myval2“ = str
6、Val2; ,Session对象,实践训练1:,界面设计,Session对象,向Session对象中存入数据的方法十分简单,下面的语句使用户单击按钮时将字符串存入Session对象中。 protected void Button1_Click(object sender, EventArgs e) Session“myval1“ = “这是Session传递的数据1“; 从Session对象中取出数据。 protected void Button2_Click(object sender, EventArgs e) Label1.Text = (string)(Session“myval1“)
7、; ,实践训练1:,Session对象,实践训练1:,运行效果,Session对象,实践训练2: 设计一个包含Default.aspx和Welcome.aspx两个页面的网站。要求用户只能通过如图1所示的Default.aspx页面,输入合法的用户名和密码后才能打开如图2所示的Welcome.aspx页面,此时页面中将显示用户名和欢迎信息。设网站中存在zhangsan,lisi,wangwu 3个合法用户。,图1,图2,Session对象,实践训练2: 如果用户视图绕过登录界面,在浏览器中输入Welcome.aspx的URL直接调用第2个页面时,屏幕上将弹出如图3所示的信息框,单击确定按钮后自
8、动显示Default.aspx。如果登录时用户输入了错误的用户名和密码,屏幕上将显示如图4所示的信息框。,图3,图4,Session对象,实践训练2: 第一步:设计程序界面 第二步:设置对象属性 第三步:向网站中添加新网页 第四步:编写事件代码,Session对象,在所有事件过程外声明并实例化一个用于存放用户名和密码的结构数组:,Session对象,Default.aspx页面装入时执行的事件代码:,Default.aspx页面“登录”按钮单击事件代码:,Session对象,Welcome.aspx页面装入时执行的事件代码:,Application对象,1 Application对象和Sess
9、ion对象的区别 Application对象和Session对象都可在服务器端保存数据或对象,使用方法和常用属性、事件、方法也基本相同。但Application对象中保存的信息是为所有来访的客户端浏览器共享的,而Session对象保存的数据则是仅为特定的来访者使用的。 例如,在河南的A用户和在河北的B用户同时访问某一服务器,若A修改了Application对象中存放的信息,B用户在刷新页面后就会看到修改后的内容;但若A修改了Session对象中存放的数据,B用户是感觉不到的。此时只有A可以看到和使用这些数据。也就是说Session对象中存放的是专用信息。,Application对象,2 App
10、lication对象的常用属性、方法和事件 1). Application对象的常用属性和方法 由于Application对象中存放的信息是共有的,有可能发生在同一时间内多个用户同时操作同一Application对象的情况,为了避免此类问题导致的出错。Application对象增加了Lock()方法和UnLock()两个方法,用于在使用set方法更改Application对象值时将其锁定,在更改完毕后再解除锁定。,Application对象,2 Application对象的常用属性、方法和事件 2). Application事件的常用事件 Application对象的常用事件有如下两个: 1)
11、 Start事件:该事件在应用程序启动时被触发。第一次启动应用程序时也会触发Session_Start 事件。不过Application_Start事件在Session_Start事件前发生。它在应用程序的整个生命周期中仅发生一次,此后除非Web服务器重新启动,否则不会再次触发该事件。 2) End事件:Application_End事件在应用程序结束时被触发,即Web服务器关闭或重新启动时被触发。关闭应用程序时也会触发Session_Start 事件。不过Application_Start事件在Session_Start事件后发生。,3 Application对象的基本应用 1) 保存信息
12、Application“对象名”=变量|常量|字符串表达式 例: Application“num”=Session“num”+1; Application“Addr”=TextBox1.text; Application“name”=“张民”;,Application对象,5 Application对象的基本应用 1) 保存信息 Application“对象名”=变量|常量|字符串表达式 2) 读取信息 变量名=Application“对象名” 例: ReadNum=Convert.ToInt32(Application“num”); TextBox1.Text=Application“Addr.toString();,Application对象,5 Application对象的基本应用 1) 保存信息 Application“对象名”=变量|常量|字符串表达式 2) 读取信息 变量名=Application“对象名” 3)修改信息(加锁与解锁) Application.Lock( ); Application.Set(“test”,Application(“test”)+1); Application.Unlock( );,Application对象,