css&javascript Application、Session、cookie 三大傳值簡易說明
其實這三個,每一個都可以獨立一章來寫
由於本人太過於懶散事務煩雜,所以就重點列列
Application
存在伺服器上,20分鐘沒人用就消失
不同使用者間可以呼叫同一個Application
Session
存在伺服器上,每個使用者都會取得獨立的Session
撰寫容易,取得方便,也有20分鐘上限
cookie
存在使用者的電腦上,不佔伺服器空間
有時間限制,不設定時間就像一次性的Session
斷線消失
其實很簡單,適合用在那裡就容易分得出差別
Application:用在記錄「訪客次數」,每個使用者連入就加1
Session:購物車、使用者登入、email 等等,不同使用者有各自已值
cookie:同上,好處是不佔伺服器的記憶體,撰寫上稍稍麻煩
程式碼:
由於本人
Application
存在伺服器上,20分鐘沒人用就消失
不同使用者間可以呼叫同一個Application
Session
存在伺服器上,每個使用者都會取得獨立的Session
撰寫容易,取得方便,也有20分鐘上限
cookie
存在使用者的電腦上,不佔伺服器空間
有時間限制,不設定時間就像一次性的Session
斷線消失
其實很簡單,適合用在那裡就容易分得出差別
Application:用在記錄「訪客次數」,每個使用者連入就加1
Session:購物車、使用者登入、email 等等,不同使用者有各自已值
cookie:同上,好處是不佔伺服器的記憶體,撰寫上稍稍麻煩
程式碼:
protected void Page_Load(object sender, EventArgs e)
{
//-----------------------------------------------------------------
/*Application
* 1.存在在伺服器的紀憶體中,20分鐘後沒有人使用,自動消失
* 2.可與其他網頁間傳遞數值
* 3.所有連入網站的使用者都可以共用此值
*
* 適合寫在:來訪人數,每次有人來就加1
*/
if (Application["myNum"] ==null)
Application.Add("myNum",10);
else
Application["myNum"] =(int)Application["myNum"] +10;
Label1.Text = Application["myNum"].ToString();
//-----------------------------------------------------------------
/*Session
* 1.存在在伺服器的紀憶體中,20分鐘沒有使用一樣會消失
* 2.每個Session對應各自的使用者
* 3.可與其他網頁間傳遞數值
* 4.使用者間不可共用
* 5.瀏覽器會使用同個Session
*
* 適合寫在:購物車、信箱、登入資訊等等
* 不同使用者會有不同的Session
* 但寫時要注意記憶體的問題,若Session過大會造成效率降低
*/
if (Session["myNum"] == null)
Session["myNum"] = 10;
else
Session["myNum"] = (int)Session["myNum"] + 10;
Label2.Text = Session["myNum"].ToString();
//-----------------------------------------------------------------
if (Request.Cookies["MyC"] != null)//如果有值就放入label3中
Label3.Text = Request.Cookies["MyC"].Value;
}
protected void Button1_Click(object sender, EventArgs e)
{
//cookie是存在於客戶端,要取得cookie的值需要向客戶端Request
//若cookie沒有設定日期,則像是一次性Session,一但關閉網頁就消失
//通常設定日期往往都天荒地老:new DateTime(9999,12,31)
//cookie是以key對應value,也可以是個集合values
//若要改寫,以同樣名稱的key以Add方式寫回去會自動取代
//cookie的值都是String,沒有int數字沒有圖,只有String
if (Request.Cookies["MyC"] == null)
{
//向使用者的電腦提出需求,看有沒有叫"MyC"的cookies
//如果是空值,表示沒有,則new一個response回去
HttpCookie cookie = new HttpCookie("MyC", (100).ToString());
cookie.Expires =new DateTime(9999,12,31);//設定到期日
Response.Cookies.Add(cookie);
Label3.Text = Request.Cookies["MyC"].Value;
}
else
{
//如果不是空值表示有,取出cookie的值加100並add回去
int aa = int.Parse(Request.Cookies["MyC"].Value);
aa += 100;
HttpCookie cookie = new HttpCookie("MyC", aa.ToString());
cookie.Expires = new DateTime(9999, 12, 31);
Response.Cookies.Add(cookie);
Label3.Text = aa.ToString();
}
}

留言
張貼留言