麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

ASP.NET Cookie對象到底是毛啊?(簡單小例子)

2019-11-17 01:38:56
字體:
來源:轉載
供稿:網友

asp.net Cookie對象到底是毛啊?(簡單小例子)

記得剛接觸asp.net的時候,就被幾個概念搞的頭痛不已,比如Request,Response,session和Cookie。然后還各種在搜索引擎搜,各種問同事的,但是結果就是自己還是很懵的節奏。

那cookie到底是毛啊?下面是我最不喜歡的一種解釋方式(官方定義吧應該叫,我這種智商根本讀不懂嘛~)

Cookie對象也稱緩存對象,該對象用于保存客戶端瀏覽器請求的服務器頁面,也可用它存放非敏感性的用戶信息。

以前根本讀不懂啊,現在其實也懵懵的。

還是用例子能把這個概念搞明白

1、做一個用戶登錄的界面,用cookies保存登錄信息的功能。如圖:

后臺代碼:

PRotected void Page_Load(object sender, EventArgs e)        {            if (Request.Cookies["passWord"] != null)            {                if (DateTime.Now.CompareTo(Request.Cookies["password"].Expires) > 0)                {                    textbox_password.Text = Request.Cookies["password"].Value;                }            }        }        protected void button_login_Click(object sender, EventArgs e)        {            if (checkbox_remember.Checked)            {                HttpCookie cookie_password = new HttpCookie("password");                cookie_password.Value = textbox_password.Text;                Response.Cookies.Add(cookie_password);                DateTime dtNow = DateTime.Now;                TimeSpan ts = new TimeSpan(0, 0, 0, 10);//這里是將cookie的有效期設置成10s                cookie_password.Expires = dtNow.Add(ts);            }         }

這個例子很簡單,思路就是選擇記住密碼的checkbox,就創建一個cookie用于記錄密碼的內容,同時設置有效期。當下次加載的時候,判斷有沒有這個“密碼”cookie,有的話判斷這個cookie是否過期,若未過期,就將這個cookie里存的值取出來,放到對應的文本框中。

這里把有效期設置為10s的原因是為了讓大家看到的效果明顯些。大家只要不斷的去刷新頁面,就會發現在10s之前,密碼部分還是一直有值,過了10s,就自動清空了。這就是因為cookie到期。

2、一個統計當前ip登錄頁面次數的功能。界面如圖:

其實還是這個例子比較有意思,界面很簡單,但是問題稍多。

后臺代碼:

        string ipAddress = string.Empty;        protected void Page_Load(object sender, EventArgs e)        {            ipAddress = Dns.GetHostByName(Server.MachineName.ToString()).AddressList[0].ToString();            if (!IsPostBack)            {                if (Request.Cookies.AllKeys.Contains(ipAddress))                {                    //Request.Cookies[ipAddress].Value = (Convert.ToInt32(Request.Cookies[ipAddress].Value) + 1).ToString();@@@                    HttpCookie cookie_ip = new HttpCookie(ipAddress);                    cookie_ip.Value = (Convert.ToInt32(Request.Cookies[ipAddress].Value) + 1).ToString();                    Response.Cookies.Set(cookie_ip);                }                else                {                    HttpCookie cookie_ip = new HttpCookie(ipAddress);                        cookie_ip.Value = "1";                    Response.Cookies.Add(cookie_ip);                    DateTime dtNow = DateTime.Now;                    TimeSpan ts = new TimeSpan(0, 0, 0, 20);                    cookie_ip.Expires = dtNow.Add(ts);                }            }        }        protected void button_statistics_Click(object sender, EventArgs e)        {            if (Request.Cookies[ipAddress] != null)            {                textbox_count.Text = Request.Cookies[ipAddress].Value;            }            else            {                textbox_count.Text = "0";            }        }        protected void button_clear_Click(object sender, EventArgs e)        {            HttpCookie cookie_ip = new HttpCookie(ipAddress);            cookie_ip.Expires = DateTime.Now.AddDays(-1);            Response.Cookies.Set(cookie_ip);            Request.Cookies.Remove(ipAddress);            Request.Cookies.Clear();        }

這個小例子的思路就是,先獲得本地的IP地址,這就保證了添加Cookie的時候,給Cookie了一個獨一無二的key。在刷新頁面的時候,去判斷當前所有Cookie中是否存在一個同名的cookie。如果不存在,就新建一個cookie,當然,此cookie的key=IP地址。就是Page_Load里else的部分。如果存在,那么就在原來的值的基礎上加1。這里要注意修改已存在Cookie值的寫法。

最開始的時候我用的是注釋掉的@@@這行代碼,就是正常思路,看著也沒什么問題呀,不過這樣寫不行,第一次加載之后的每次加載,取到的Request.Cookies[ipAddress].Value這個值總是1。所以對于修改已有的cookie值,還是需要使用cookies的set方法才行。

此外還有一個地方是需要注意的,就是刪除cookie的時候,如果直接使用Cookies.Remove或者Cookies.Clear()方法都達不到想要的效果。需要配合的加上Expires,給一個負值。然后去更新Cookie,再刪除,這樣這個cookie就徹底消失了。否則在下次加載的時候又會出現,這個還真不知道是為什么?我之前就寫了一句Request.Cookies.Clear(),打斷點跟的時候,所有的cookie確實都清空了,但是當再次加載的時候,在添加cookie前打了斷點,會發現之前刪除的cookie又出現了。很奇怪啊~~

希望明白的朋友告訴一聲怎么回事哈。

兩個簡單的小例子讓自己對cookie不再感覺那么陌生和害怕了。所以光看概念還是效果一般,動手才是王道呀~


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 99国产精品自拍 | 精品国产乱码久久久久久丨区2区 | 亚洲免费在线视频 | omofun 动漫在线观看 | 亚洲资源在线 | 亚洲午夜不卡 | 国产精品一区二av18款 | 成人在线视频精品 | 一级黄色免费大片 | 国产一区二区三区精品在线观看 | 亚洲91网 | 日本视频在线免费观看 | 免费特黄| 欧美国产日韩在线观看成人 | 日韩视频―中文字幕 | 中国videos露脸hd | 黄网站免费观看视频 | 日本在线观看视频网站 | 精品在线免费播放 | 国产一区二区免费在线观看视频 | 欧美国产日韩在线 | 国产精品91久久久 | 黄色片免费视频 | 亚洲无马在线观看 | 日本残忍极度灌浣肠视频 | 欧美精品成人一区二区三区四区 | 欧美人与牲禽动交精品一区 | 欧美日韩免费观看视频 | 亚洲精品久久久久www | 国产一区二精品区在线 | 激情亚洲一区二区三区 | 91麻豆精品国产91久久久点播时间 | 成人午夜网址 | 91成人一区 | 凹凸成人精品亚洲精品密奴 | 免费视频aaa | 黄色一级电影网 | 欧美一级毛片大片免费播放 | 欧美国产精品久久 | 最新中文字幕第一页视频 | 国产精品久久久久久影院8一贰佰 |