【asp.net】常用内置对象(session,Application,ViewSate)

(一)Session

Session对象可以为每个用户的会话存储信息,而且这个信息只能被用户自己使用,而不能被其他用户访问.它可以在不同的页面间共享数据,但是不能再用户间共享数据. SessionID作为session的一个特殊的标志符,就起到了这样的作用.

Session允许程序员把任何类型的数据存储在服务器上,它不会传送给客户端.它是理想的信息存储器,我们常见的例子,就是当我们从一个页面跳转到另一个页面时,可以在它里面存储购物篮的内容.

事件

Session有两个事件:session_OnStart和Session_OnEnd.前者在创建一个Session时被触发,后者在Session结束(或者超时或者调用了Abandon方法)被调用.可以在Global.asax中为这两个事件增加处理代码.

(二)application

Application的原理是在服务器端建立一个状态变量,来存储所需的信息,.

这个状态变量是存在内存中的,其次这个状态变量时可以被网站的所有页面访问的.

一些特点

1.一个网站可以有不止一个Application对象.典型情况下,可以针对个别任务的一些文件创建个别的application对象.比如可以创建一个Application对象来适用于全部共用用户,再创建另外一个只适用于网络管理员的application对象

2.在服务器运行期间永久的保存数据.当关闭IIS或者使用Clear时,其生命周期终止

3.因为多个用户可以共用一个Application所以必须要有Lock和Unlock方法,以此来保证多个用户之间无法同时改变某一属性

(三)ViewState

ViewState(视图)是asp.net的一种重要机制,使用这种机制,可以用来根据服务器控件的状态值,否则这些值将不作为HTTP窗体的一部分而回传。例如,由label控件显示的文本默认情况下就保存在ViewState中。

在asp时代, 一个html控件的值(比如input 控件值),当我们把表单提交到服务器后, 页面再刷新回来的时候, input里面的数据已经被清空.这是因为web的无状态性导致的, 服务端每次把html输出到客户端后就不再于客户端有联系.而使用ViewState就可以改变这一点。

也就是说,当页面提交的时候,页面控件中的值会保存到这个对象中,当页面刷新后我们可以从这个对象中提取出这些控件原来的值。从而保存以前的值。

但是使用ViewState安全性不是太高,它只是经过一个Base64加密过的字符串,很容易通过反向工程得到该数据

下面是一段实例

web页创建了一个Button控件和一个TextBox控件

protected void Button1_Click(object sender, EventArgs e){//判断是否有ViewState,,没有的话则创建一个ViewState.if (ViewState["count"] == null)  {ViewState["count"] = 0;  //创建一个viewState,并赋值为0  }int ncount = (int)ViewState["count"];//此处需要类型转换ncount += 1;ViewState["count"] = ncount;TextBox1.Text = ViewState["count"].ToString();}

ViewState和Session

ViewState和Session在代码上看是很相近的。但是在运行过程中确有很大的不同。

1.从保存方式。Session是保存在内存中的,所以说如果大量使用Session,内存消耗很大。而ViewState是通过隐藏控件来实现保存的。所以说大量使用会增加页面html的输出量,占用更都的带宽

2.Session的使用期默认20分钟,而ViewState则没有这个限制

3.viewstate并不是能存储所有的.net类型数据,它仅仅支持String、Integer、Boolean、Array、ArrayList、Hashtable 以及自定义的一些类型.

版权声明:本文为博主原创文章,未经博主允许不得转载。

有事者,事竟成;破釜沉舟,百二秦关终归楚;苦心人,

【asp.net】常用内置对象(session,Application,ViewSate)

相关文章:

你感兴趣的文章:

标签云: