中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

asp.net 狀態的傳遞和保存
來源:易賢網 閱讀:1133 次 日期:2015-08-12 15:06:47
溫馨提示:易賢網小編為您整理了“asp.net 狀態的傳遞和保存”,方便廣大網友查閱!

1,http協議是無狀態的。服務器不會記住上次給瀏覽器的處理結果,如果需要上次處理結果(上次狀態)就需要瀏覽器把處理結果值(上次狀態)再次給服務器。

2,url傳值:通過url參數或者通過form表單進行頁面件的傳值 (不能做到很自由的存取和讀取,而且不安全)

3,cookie :①cookie可以用來進行更加自由的數據的存取和讀取。

②cookie是和站點相關的,自己域名寫的只有自己的域名才可以讀取。

③客戶端向服務器發送請求的時候 處理發送form表單信息以外還會把和站點有關的所有的cookie發送給服務器,是強制的。

④服務器返回的數據處理html數據以外,還會返回修改的cookie,瀏覽器拿到修改后的cookie更新到本地的cookie

⑤服務器端使用cookie案例,記住用戶名功能:

a,設置頁面值: response.setcookie(new httpcookie("username",username))

b,讀取頁面值: username=request.cookies["username"].value

⑥瀏覽器關閉以后cookie的聲明周期到期,也就是cookie的默認生命周期是瀏覽器的生命周期。可以通過設置expires屬性設置cookie的過期時間:cookie.expires=datetime.now.adddays(-1)

⑦cookie在客戶端是以鍵值對存在的

4,cookie缺點:①客戶端額可以手動清楚cookie 所以cookie里面存放的信息是可有可無的信息

②瀏覽器對 cookie 的大小有限制,因此只有不超過 4096 字節才能保證被接受

③機密信息不能放到cookie里面

④cookie不能跨瀏覽器

5,cookie的寫和讀: a,新建cookietest.html頁面并添加 兩個按鈕分別用于cookie的讀和寫

代碼如下:

<!doctype html>

<html xm lns="http://www.w3.org/1999/xhtml">

<head>

<me ta http-equiv="content-type" content="text/html; charset=utf-8" />

<title></title>

</head>

<body>

<form>

<in put type="submit" name="read" value="讀取cookie" />

<in put type="submit" name="write" value="寫入cookie" />

<br />

讀取出來的cookie: $model.cookievalue

</form>

</body>

</html>

b,建立對應的cookietest.ashx頁面 實現cookie的新建寫入本地以及讀取cookie的值

using system;

using system.collections.generic;

using system.linq;

using system.web;

namespace httpnostatus

{

/// <summary>

/// httpcookie 的摘要說明

/// </summary>

public class cookietest : ihttphandler

{

public void processrequest(httpcontext context)

{

context.response.contenttype = "text/html";

//if else 判斷是點擊的那個按鈕

if (!string.isnullorempty(context.request["read"]))

{

if (context.request.cookies["age"] != null)

{

httpcookie cookie = context.request.cookies["age"];

string strvalue = cookie.value;

var data = new { cookievalue = strvalue };

//加載模板頁面并傳遞 cookie value的值

string strhtml = common_nvelocity.renderhtml("cookietest.html", data);

context.response.write(strhtml);

}

else

{

context.response.write("cookie 不存在");

}

}

else if (!string.isnullorempty(context.request["write"]))

{

//寫入新的cookie

httpcookie acookie = new httpcookie("age");

acookie.value = "25";

acookie.expires = datetime.maxvalue;

context.response.cookies.add(acookie);

//cookie不存在 直接加載模板頁面

string strhtml = common_nvelocity.renderhtml("cookietest.html", null);

context.response.write(strhtml);

}

else

{

//第一次加載頁面

string strhtml = common_nvelocity.renderhtml("cookietest.html", null);

context.response.write(strhtml);

}

}

public bool isreusable

{

get

{

return false;

}

}

}

}

6,cookie最主要的一個功能是保存用戶的登陸名,這樣用戶在下次登陸的時候系統就可以自動填寫登陸名稱

a,新建logincookie.html頁面,頁面中添加我們經常見到的 用戶名,用戶密碼,登陸

登陸頁面第一次加載的時候,設置默認的登陸名為空,登陸成功以及再次登陸的時候系統就自動補充登陸用戶名

<!doctype html>

<html xm lns="http://www.w3.org/1999/xhtml">

<head>

<me ta http-equiv="content-type" content="text/html; charset=utf-8" />

<title></title>

</head>

<body>

<form action="logincookie.ashx" method="post">

<table>

<tr>

<td>登陸名</td>

<td>

<in put type="text" name="username" value="$model.loginuser" /></td>

</tr>

<tr>

<td>密碼</td>

<td>

<in put type="password" name="password" /></td>

</tr>

<tr>

<td>

<in put type="submit" name="login" value="登陸" /></td>

<td></td>

</tr>

</table>

</form>

</body>

</html>

b, 新建對應的logincookie.ashx頁面,實現把用戶名讀取出來并寫入cookie "ckloginuser"

using system;

using system.collections.generic;

using system.linq;

using system.web;

namespace httpnostatus

{

/// <summary>

/// logincookie 的摘要說明

/// </summary>

public class logincookie : ihttphandler

{

public void processrequest(httpcontext context)

{

context.response.contenttype = "text/html";

//加載頁面直接顯示 頁面

if (context.request.form["login"] == null)

{

string strhtml = "";

var data = new { loginuser = "" }; //登陸賬號默認為空

//判斷cookie是否存在,如果存在 把cookie的值傳遞到html頁面,如果不存在就是默認的空

if (context.request.cookies["ckloginuser"] != null)

{

data = new { loginuser = context.request.cookies["ckloginuser"].value.tostring() };

}

strhtml = common_nvelocity.renderhtml("logincookie.html", data);

context.response.write(strhtml);

}

else

{

//用戶登陸,保存用戶名到cookie

httpcookie loginuser = new httpcookie("ckloginuser");

loginuser.value = context.request.form["username"];

loginuser.expires = datetime.now.adddays(30);

context.response.cookies.add(loginuser);

//加載頁面直接顯示 頁面

string strhtml = common_nvelocity.renderhtml("logincookie.html", new { loginuser = context.request.form["username"] });

context.response.write(strhtml);

}

}

public bool isreusable

{

get

{

return false;

}

}

}

}

7,以上方法把登陸賬號以cookie的形式存放在客戶端,這樣每一次的請求就可以帶出用戶登陸名稱了

有一種情況: 用戶登陸成功以后就可以訪問網站的其他所有頁面,其他頁面就需要先判斷用戶是否登陸成功。

如果登陸成功為true放到cookie中,這樣的客戶端就可以進行篡改把false改為true從而可以非法訪問為授權頁面了,這樣放到cookie就不安全了。

如果登陸成功放到服務器端,那么網站的多個頁面就可以直接讀取到這個值,而且是安全的不會被客戶端篡改的了。

8,session原理: 把數據value值存儲在服務器端并在客戶端存放value對應的id 。(id,value)都存放服務器 另外把id以cookie的形式存放客戶端。這樣就可以從客戶端cookie中抓取id,然后從服務器端讀取到id對應的value。

10,下面示例以session原理實現頁面判斷用戶是否有成功登陸:成功登陸的用戶可以對特定頁面進行訪問、如果沒有成功登陸就跳轉到登陸頁面。

a. 添加類 sessionmgr.cs 在服務器端存儲 鍵值對 id/value

using system;

using system.collections.generic;

using system.linq;

using system.web;

namespace httpnostatus

{

public class sessionmgr

{

//定義鍵值對,存儲登陸信息

private static dictionary<guid, string> keyvalue = new dictionary<guid, string>();

//設置鍵值對的值

public static void setkeyvalue(guid id, string value)

{

keyvalue[id] = value;

}

/// <summary>

/// 檢查客戶端傳遞過來的鍵值對是否存在

/// </summary>

/// <param name="id"></param>

/// <returns></returns>

public static bool ifidexist(guid id)

{

return keyvalue.keys.contains(id);

}

//返回服務器端id對應的value值

public static string getvalue(guid id)

{

return keyvalue[id].tostring();

}

}

}

b. 添加 loginsession.ashx 判斷用戶是否登陸成功,如果登陸成功把存儲對應的鍵值對的值

using system;

using system.collections.generic;

using system.linq;

using system.web;

namespace httpnostatus

{

/// <summary>

/// loginsession 的摘要說明

/// </summary>

public class loginsession : ihttphandler

{

public void processrequest(httpcontext context)

{

context.response.contenttype = "text/html";

string strhtml = "";

//讀取用戶名和密碼

string strusername = context.request.form["txtusername"];

string strpwd = context.request.form["txtpassword"];

if (strpwd == "123456")

{

//登陸成功,設置對應的鍵值對

guid id = guid.newguid(); // 產生唯一的id

sessionmgr.setkeyvalue(id, strusername);

//id 保存在客戶端cookie中

httpcookie logincookie = new httpcookie("logincookie");

logincookie.value = id.tostring();

logincookie.expires = datetime.now.adddays(7);

context.response.cookies.add(logincookie);

//跳轉到授權頁面

context.response.redirect("authorizationpage.ashx");

}

else

{

//登陸失敗 , 加載登陸頁面

strhtml = common_nvelocity.renderhtml("loginsession.html", null);

context.response.write(strhtml);

}

}

public bool isreusable

{

get

{

return false;

}

}

}

}

c. templates文件夾下添加loginsession.html 登陸頁面

<!doctype html>

<html xm lns="http://www.w3.org/1999/xhtml">

<head>

<me ta http-equiv="content-type" content="text/html; charset=utf-8" />

<title></title>

</head>

<body>

<form action="loginsession.ashx" method="post">

<table>

<tr>

<td>登陸名</td>

<td>

<in put type="text" name="txtusername" /></td>

</tr>

<tr>

<td>密碼</td>

<td>

<in put type="password" name="txtpassword" /></td>

</tr>

<tr>

<td>

<in put type="submit" name="login" value="登陸" /></td>

<td></td>

</tr>

</table>

</form>

</body>

</html>

d. 添加authorizationpage.ashx頁面,只有登陸后的賬戶才有權限訪問這個頁面

using system;

using system.collections.generic;

using system.linq;

using system.web;

namespace httpnostatus.templates

{

/// <summary>

/// authorizationpage 的摘要說明

/// </summary>

public class authorizationpage : ihttphandler

{

public void processrequest(httpcontext context)

{

context.response.contenttype = "text/html";

//抓取客戶端 cookie的id值

httpcookie logincookie = context.request.cookies["logincookie"];

if (logincookie != null)

{

guid id = new guid(logincookie.value);

// 讀取id對應的value

string strvalue = sessionmgr.getvalue(id);

//輸出value值,并提示該賬號是已經登陸的賬號

context.response.write(strvalue + ",您已經登陸本網站,有權限訪問此頁面");

}

//如果cookie不存在,則直接跳轉到登頁面

else

{

context.response.redirect("loginsession.ashx");

}

}

public bool isreusable

{

get

{

return false;

}

}

}

}

------------------------------------------------------------gif 動畫演示----------------------------------------------------------------

11,上面的示例是也就是session原理。asp.net已經內置了session機制,下面我們直接用asp.net session實現 判斷用戶是否有登陸成功:

(一般處理程序httphandler操作session, 要實現irequiressessionstate接口)

分別添加頁面: loginsessionnew.ashx(登陸一般處理程序) , loginsessionnew.html(登陸模板), authorizationpagenew.ashx(登陸后才有權限訪問的頁面)。

a,loginsessionnew.ashx(登陸一般處理程序)

using system;

using system.collections.generic;

using system.linq;

using system.web;

using system.web.sessionstate;

namespace httpnostatus

{

/// <summary>

/// loginsessionnew 的摘要說明

/// </summary>

public class loginsessionnew : ihttphandler, irequiressessionstate

{

public void processrequest(httpcontext context)

{

context.response.contenttype = "text/html";

string strhtml = "";

//讀取用戶名和密碼

string strusername = context.request.form["txtusername"];

string strpwd = context.request.form["txtpassword"];

if (strpwd == "123456")

{

//登陸成功,直接保存session值

context.session["loginusername"] = strusername;

//跳轉到授權頁面

context.response.redirect("authorizationpagenew.ashx");

}

else

{

//登陸失敗 , 加載登陸頁面

strhtml = common_nvelocity.renderhtml("loginsessionnew.html", null);

context.response.write(strhtml);

}

}

public bool isreusable

{

get

{

return false;

}

}

}

}

b,templates模板下新建loginsessionnew.html(登陸模板)

<!doctype html>

<html xm lns="http://www.w3.org/1999/xhtml">

<head>

<me ta http-equiv="content-type" content="text/html; charset=utf-8" />

<title></title>

</head>

<body>

<form action="loginsessionnew.ashx" method="post">

<table>

<tr>

<td>登陸名</td>

<td>

<in put type="text" name="txtusername" /></td>

</tr>

<tr>

<td>密碼</td>

<td>

<in put type="password" name="txtpassword" /></td>

</tr>

<tr>

<td>

<in put type="submit" name="login" value="登陸" /></td>

<td></td>

</tr>

</table>

</form>

</body>

</html>

c,authorizationpagenew.ashx(登陸后才有權限訪問的頁面)

using system;

using system.collections.generic;

using system.linq;

using system.web;

using system.web.sessionstate;

namespace httpnostatus

{

/// <summary>

/// authorizationpagenew 的摘要說明

/// </summary>

public class authorizationpagenew : ihttphandler, irequiressessionstate

{

public void processrequest(httpcontext context)

{

context.response.contenttype = "text/plain";

//檢查session是否存在

ob ject obj = context.session["loginusername"];

if (obj != null)

{

//session存在,讀取session值,并提示該賬號是已經登陸的賬號

context.response.write(obj.tostring() + ",您已經登陸本網站,有權限訪問此頁面");

}

//如果session不存在,則直接跳轉到登頁面

else

{

context.response.redirect("loginsessionnew.ashx");

}

}

public bool isreusable

{

get

{

return false;

}

}

}

}

· asp.net內置session機制同樣實現了對用戶是否登陸成功的判斷:loginsessionnew.ashx頁面headers中我們看到了cookie中多了asp.net_sessionid

session機制在客戶端存放了asp.net_sessionid

· 權限訪問頁面,請求頭中讀取到了客戶端cookie中的asp.net_sessionid

12, asp.net的session機制: session依賴于cookie , 借助cookie在客戶端瀏覽器中記錄了id, 在服務器端存儲了value值。

13,session的值是放到了服務器內存中,所以session存放小數據。

session(會話)有自動銷毀機制,如果一段時間內瀏覽器沒有和服務器交互,則session會定時自動銷毀。

登陸賬號后,一段時間內如果不操作 系統就會自動退出,這就是session自動銷毀了。

更多信息請查看IT技術專欄

更多信息請查看網絡編程
易賢網手機網站地址:asp.net 狀態的傳遞和保存
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
欧美日韩在线综合| 欧美日韩美女在线| 国产一区二区三区最好精华液| 久久www成人_看片免费不卡| 亚洲欧洲在线免费| 激情久久综艺| 国产日韩精品一区二区| 欧美色123| 欧美va亚洲va国产综合| 久久久久免费视频| 久久国产欧美精品| 亚洲欧美日韩在线播放| 亚洲午夜精品久久| 亚洲午夜视频| 亚洲一区久久| 亚洲影视中文字幕| 亚洲午夜视频| 欧美一级视频| 久久狠狠亚洲综合| 久久久精品欧美丰满| 亚洲另类视频| 欧美激情在线播放| 亚洲国产一区二区三区高清| 久久久综合香蕉尹人综合网| 欧美一区高清| 久久精品色图| 美女精品网站| 欧美日韩高清免费| 欧美性色综合| 国产拍揄自揄精品视频麻豆| 激情五月综合色婷婷一区二区| 黄色免费成人| 在线播放日韩| 日韩视频在线免费观看| 亚洲一区二区免费看| 欧美一区二区三区在线看| 久久精品国产99| 欧美77777| 国产精品久久久久久久久久直播| 国产网站欧美日韩免费精品在线观看 | 久久精品中文| 巨胸喷奶水www久久久免费动漫| 欧美成人视屏| 国产精品每日更新| 激情综合自拍| 亚洲色诱最新| 久久手机免费观看| 欧美久久一区| 激情六月综合| 宅男噜噜噜66国产日韩在线观看| 欧美在线视频导航| 欧美精品一区在线发布| 国产人久久人人人人爽| 亚洲国产欧美在线人成| 亚洲欧美国产va在线影院| 久久综合久久综合久久| 国产精品扒开腿做爽爽爽视频| 好吊一区二区三区| 正在播放亚洲一区| 老司机精品视频网站| 国产精品一级| 日韩亚洲欧美在线观看| 久久精品国产一区二区三| 欧美日韩精品欧美日韩精品| 国产一区二区三区高清播放| 亚洲视频碰碰| 欧美激情中文字幕乱码免费| 国产亚洲视频在线| 亚洲一区二区三区色| 欧美激情视频一区二区三区在线播放| 国产精品一二三四区| 日韩亚洲欧美精品| 裸体女人亚洲精品一区| 国模私拍视频一区| 亚洲一区欧美激情| 欧美日韩亚洲系列| 亚洲精选中文字幕| 欧美成人精品h版在线观看| 狠狠色丁香婷婷综合久久片| 亚洲欧美在线一区二区| 国产精品久久久久国产a级| 亚洲精品视频一区二区三区| 免播放器亚洲一区| 在线观看日韩一区| 久久亚洲春色中文字幕| 国产在线日韩| 欧美一级在线视频| 国产精品有限公司| 亚洲在线视频免费观看| 欧美午夜在线观看| 亚洲一区二区三区视频播放| 欧美日韩一区二区欧美激情| 亚洲老板91色精品久久| 欧美激情网友自拍| 亚洲另类一区二区| 欧美日本在线视频| 亚洲精品中文在线| 欧美精品一区二区久久婷婷 | 国内精品伊人久久久久av一坑| 亚洲视频一二三| 欧美日韩中文字幕在线视频| 亚洲精品久久久久久久久久久 | 亚洲一级黄色| 欧美午夜不卡在线观看免费 | 欧美视频不卡| 亚洲图片激情小说| 国产精品免费看片| 午夜精品久久久久久久久久久| 国产精品三上| 欧美一区二区福利在线| 国内精品久久久久久久97牛牛| 久久久久一本一区二区青青蜜月| 伊人久久婷婷色综合98网| 欧美~级网站不卡| 亚洲乱亚洲高清| 欧美日韩精品欧美日韩精品一| 妖精视频成人观看www| 国产精品入口福利| 久久久亚洲人| 99re6热只有精品免费观看 | 国产伦一区二区三区色一情| 香蕉久久国产| 激情婷婷欧美| 欧美激情一区二区三区四区| 亚洲美女一区| 国产精品亚洲网站| 免费不卡在线视频| 亚洲网址在线| 极品中文字幕一区| 欧美日韩国产精品一卡| 亚洲欧美99| 日韩亚洲国产精品| 欧美极品在线观看| 国产精品扒开腿做爽爽爽软件 | 欧美影院午夜播放| 国内精品嫩模av私拍在线观看 | 亚洲免费一在线| 亚洲激情啪啪| 国产精品色网| 亚洲视频在线观看三级| 国产精品二区在线| 久久精品国产清高在天天线| 亚洲激情欧美| 国产欧美日韩综合一区在线观看 | 99精品久久久| 欧美一级在线亚洲天堂| 国外成人在线视频| 欧美三级电影网| 欧美小视频在线观看| 欧美va天堂在线| 久久精品一区| 99在线|亚洲一区二区| 国产精品一区免费观看| 欧美99久久| 久久av二区| 亚洲一区欧美| 亚洲精品精选| 精品成人一区二区三区四区| 国产精品一页| 欧美三区在线视频| 欧美激情一区二区久久久| 久久久久看片| 欧美一级黄色录像| 在线一区观看| 最新亚洲视频| 樱桃成人精品视频在线播放| 国产情人节一区| 国产精品va在线播放| 男女激情久久| 久久综合伊人77777尤物| 欧美一区二区黄| 销魂美女一区二区三区视频在线| 99国产精品久久久久老师| 91久久综合| 亚洲国产另类久久久精品极度| 国产一区二区三区久久精品| 国产精品视频最多的网站| 欧美深夜影院| 欧美猛交免费看| 欧美乱大交xxxxx| 欧美精品一区二区视频| 欧美激情中文不卡| 欧美日韩18| 欧美日韩中字| 国产精品久99| 国产精品外国| 国产亚洲人成a一在线v站| 国产一区二区三区四区老人| 国产一区欧美| 亚洲高清资源综合久久精品| 亚洲国产高清aⅴ视频| 亚洲人www| 一区二区欧美精品| 亚洲综合色自拍一区| 欧美亚洲系列| 久久午夜精品一区二区| 欧美不卡视频一区发布| 欧美日韩国产综合久久| 国产精品激情| 国产一区二区在线观看免费|