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的值
新聞熱點
疑難解答