檢視狀態是在頁面內的
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是放在本地的
把表的內容放入到資料庫裡---(買書的購物車)