.net主要有application session request/response page viewState这几种域。

这里主要将viewState(jsp中没有)

viewState与session相似,都可以用来保存当前用户的一些信息,都是用键值对的方式保存的。

session一般保存多个页面共享的信息(如用户名),数据存贮在服务器端,客户端保存当前用户的sessionID,页面需要数据时通过sessionID从服务器取,一般30分钟过期后失效。

viewState保存页面控件(服务器空件)的属性值(例如input控件的value值),普通的html的input元素,当将该input的值提交给服务器后,如果不做任何处理,返回的页面的input的值为空,如果有了viewState 那么放回的页面的input将会保存(显示)原来的input的值(类似于让http协议有了记忆力)。viewState数据存放在客户端的隐藏控件里,因此viewState只存放一些不重要的信息。又由于viewState会在前端和后端传输数据,所以viewState只存放少量的数据,否则会浪费流量,增大带宽。永不过期。

一般在页面不需要与服务器交互(例如只做信息展示时),需要禁用viewState,默认是没有禁止的,设置enableViewState=false(可在页面和控件中设置,如果要统一设置,可在配置文件中设置)