web程序入门五(http无状态)

Asp.net中的状态保持方案:

 ViewState:是donet特有的  微软提供的对象来完成状态保持

ViewState["key1"] = 11;     赋值  键值对 形式  object类型

ViewState["key1"] 直接取值,将其转化成相应的类型

原理:本质上是一种隐藏域。微软默认提供的

 想用ViewState必须用服务端控件编程      <form  id= "form1"   runat="server">

 

cookie  存储在浏览器内存中,浏览器关闭就没有了。可以存在磁盘上,永久存储。

可以设置一个path来限制某个路径下面的页面才会把cookie发送到后台。

Response.Cookies["cp"].Value = "abc";  写一个cookie ,给cookie赋值

如果这样创建cookie,是将cookie的数据存储在浏览器的内存中,浏览器关闭,cookie丢失

string  ss  =  Request.Cookies["cp"].Value;   接收浏览器端的cookie值

Response.Cookies["cp"].Value = "abc";

Response.Cookies["cp"].Expires = DateTime.Now.AddDays(3);  添加过期时间,当前时间再加3天

设置了过期时间的cookie存储在磁盘上

Response.Cookies["cp"].Expires = DateTime.Now.AddDays(-1)设置cookie过期   删除cookie

 Response.Cookies["cp"].Path = "/"     指定cookie路径,访问该路径才有cookie值     /代表所有的路径

 Response.Cookies["cp"].Path = "/app"  只有访问该路径下所有文件夹 才带cookie 

 Response.Cookies["cp"].Domain = "www.baidu.com"   设置域范围  

 

除了上面的方法 Donet 还提供了下面的一个类来添加cookie

HttpCookie   acookie  = new HttpCookie("name");

acookie.Value = "abc";

acookie.Expires = DateTime.Now.AddDays(1);

Response.Cookies.Add(acookie);

 

多值cookie

Response.Cookies["user"]["username"] = "abc";

Response.Cookies["user"]["lastvisi"] = "2017-11-29";

 

 Request.Cookies.Count   获取cookie的个数

 

 session相关:session存object类型数据

服务端状态保存机制,每个session有一个sessionId   SessionId以cookies的形式放在请求报文中,发送给服务端

Set-Cookie:中存的就是sessionId

每个用户都有自己的session对象

Session["name"] = "123"   Session 默认过期时间20分钟,滑动过期时间

浏览器关了,sessionId 没有了,也就没有了session值

取Session的值前,需要先判断不为空

Response.Write((Session["name"]).ToString());

 

能用客户端保存就不用服务端

 

在一般处理程序中使用session必须实现IRequiresSessionState接口   这是一个标记接口

在aspx中不需要

System.Web.SessionState.IRequiresSessionState  在类中继承这个接口

Session["user"] = "abcf";         //进程内session

 

posted on 2017-11-29 10:30  yanmay  阅读(247)  评论(0编辑  收藏  举报

导航