视图状态是在页面内的
cookie而abc.aspx?page=1&id=5;
服务器端的状态管理
(Application)应用程序状态,是一个全局的状态
会话状态(session)
数据库
对于应用程序状态,位于应用程序根目录下(虚拟目录,和虚拟目录的状态,一个虚拟目录也可以当成一个应用程序根目录 一般是 Gloabal.asax),用户不可以浏览(它没有用户界面).不响应页面请求.
具体的实例:
using
System;
using
System.Data;
using
System.Configuration;
using
System.Collections;
using
System.Web;
using
System.Web.Security;
using
System.Web.SessionState;
namespace
WebApplication1
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
}
protected void Application_End(object sender, EventArgs e)
{
}
}
}
缺点:内存占用.同步问题(锁定问题,多人访问的时候会有锁定的过程,否则会出现死锁等问题).生命周期(直到机器发生故障<iis发生故障>)
它的赋值:
Application["var_name"]=name;
取值:
var_name=Application["var_name"];
同步:
Application.lock()
Application.Unlock()
如:做聊天室在线人数的统计 设计思路:
网站运行,初始化统计变量;
用户进入,统计变量加1;
用户退出,统计变量减1;
要求:用户刷新页面,统计变量不变;
详细代码:default.aspx---用户登陆
chat.aspx-----登陆成功后的界面
global.asax----应用程序
//
default.aspx
using
System;
using
System.Data;
using
System.Configuration;
using
System.Collections;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
namespace
WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Application.Lock();
Application["user"] = (int)Application["user"] + 1;
Application.UnLock();
Response.Redirect("chat.aspx?username=" + TextBox1.Text);
}
}
}
//
chat.aspx
using
System;
using
System.Data;
using
System.Configuration;
using
System.Collections;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
namespace
WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Application.Lock();
Application["user"] = (int)Application["user"] + 1;
Application.UnLock();
Response.Redirect("chat.aspx?username=" + TextBox1.Text);
}
}
}
//
global.asax
using
System;
using
System.Data;
using
System.Configuration;
using
System.Collections;
using
System.Web;
using
System.Web.Security;
using
System.Web.SessionState;
namespace
WebApplication1
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
Application["user"] = 0;
}
protected void Application_End(object sender, EventArgs e)
{
Application.Lock();
Application["user"] = (int)Application["user"] - 1;
Application.UnLock();
}
}
}
解果截图:---抱歉 不知道该怎么上传,传了几次都不可以.这里我们省略了验证部分
缺点:Vs2005的上述代码对浏览器的关闭没有反应,怎么弄?
接下来我们说说Session
它与浏览器同在,保存在内存中,有生命周期(timeout设定周期,一般是20min),所以它可以强制的终止,session.abandon()
赋值:
Session["var_name"]=var_name;
Var_name=Session{"var_name"};
常用属性
SessionID
IsNewSession
Timeout
常用方法
Session.Abandon();//放弃这个Session
Session.Removeall();//把所有的Session都清空掉
Session.Remove("a");//把含有a的session都给remove掉
Ada("")//有加的操作
接下来我们用一个用户名和密码的传递来说明
viewState的特点
信息作为页面内往返时,ViewState工作
信息作为隐藏域进行存储
页面存在,ViewState就存在
//它没有自动过期的问题,这是和Session的区别之一,如果录入成绩的时候,可以防止过期,这是优点
Cookie的特点
信息保存在客户端
生命周期可以自行设定
数据存储容量有限制(小于4096B)
浏览器可能不支持
像一些投票,我们只要把Cookie给删除,就可以投票投好多次呢,因为它用来验证谁的IP是放在本地的
把表的内容放入到数据库里---(买书的购物车)