C# 中Cookie,Session,Application的用法与区别?

1.application 储存在服务端,没有时间限制,服务端关闭既销毁(前提自己没写销毁方法)
2.session 储存在服务端,客户端(浏览器)关闭既销毁,(若长时间不使用且浏览器未关闭的情况下,默认自动销毁时间为20分钟)
3.cooke 储存在客户端,由用户自己销毁
application:
程序全局变量对象,对每个用户每个页面都有效
session:
用户全局变量,对于该用户的所有操作过程都有效
cooke:
客户端信息存放对象,可以把用户的信息保存在用户的本地,不必总是访问服务器
application:
用于保存所有用户共用的数据信息,如果被保存的数据在应用程序生存期内根本不会改变或很小改变,用它. 但是在asp.net中有个web.config,可能更好点. 如果要使用application,一个需要考虑的问题是任何写操作都有要在application_onstart事件中(global.asax)中完成,尽g管使用application.lock和application.unlock方法来避免操作的同步,但是它串行化了对application的请求,当网站访问量大时会造成性能瓶颈.因此最好不要用它存取大的数据集
使用方法:
存放信息
Application[“test”]=“100”
读取
String test =Application[“test”].Tostring();
Session :
Session 用于保存每个用户的专用信息,它的生存期是用户持续请求时间再加上一段时间(可以在web.config中设置,默认是20分钟).
session中的信息保存在服务器的内存中,当然你也可以设置它的保存方法(如存在SQL数据库中).由于用户停止程序后它仍然在内存中保持一段时间,因此使用Session对象保存用户数据的方法效率很低.对于小量的数据使用Session还是一个不错的选择

session[“user”]=“majcms”

Session username=Session[“user”].ToString();

Cookie:
Cookie用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它保存非敏感性的内容.保存时间可以根据需要设置,如果没有设置Cookie失效时间,它仅保存至浏览器关闭.如果将Cookie设置为Min Value,则表示他永不过期.Cookie存蓄量受到很大限制,一般浏览器支持最大容量为4096字节.因此不能用来存蓄大量数据.由于并非所有浏览器都支持Cookie,并且是以名文方式保存的,所以最好不要保存敏感性的内容.否则会影响网络安全

//存
Response.Cookies[“name”].Value;


String username=Response.Cookies[“name”].Value;

Session:该对象是HttpSession类型的对象,描述一个客户端与服务器之间的一次通话时段,该段时间内包含客户端的若干次请求和服务器的相应响应,整个时间段session对象都存在.常用来实现购物车之类的存蓄当前用户的数据.不同用户有各自的不同session对象.
application:该对象是ServletContext类型的对象,描述的是本身web程序.该对象在web程序部署到tomcat服务器时由容器产生,其生命周期至web程序从tomcat服务器卸载出去是消失,是所有客户端能共享的一个全局对象,整个系统只有一份.
Cookie以文件的形式保存的请求信息

-.session
Session[“checkcode”]="";
String checkcode =Session[“checkcode”];
保存对象
Agent agent =new Agent();
Session [“agent”]=agent;

取值
Agent agent =(Agent)Session[“agent”];
二.cookie的应用
HttpCookie cookie =new HttpCookie(“mycookie”);–定义cookie对象以及名为mycookie的项
DateTime dt =DateTime.Now; --定义时间对象

TimeSpan ts =new TimeSpan(1,0,0,0); cookie 有效作用时间,具体查msdn

cookie.Expires=dt.Add(ts);–添加时间的作用

cookie.Value.Add(“user”,“you name”);–增加属性

cookie.Values.Add(“userid”,“123456”)

Response.AppendCookie(cookie);确认写入cookie中 读取cookie

if(Request.Cookies[“mycookie”]!=null)
{
string temp =Convert.ToString(Request.Cookies[“mycookie”].Values[“user”])+""+
Convert.ToString(Request.Cookies[“mycookie”].Values[“userid”]);
//读全部就用Request.Cookies[“mycookie”].Value
}
修改cookie
Response.Cookies[“mycookie”][“user”]=“2”;
Response.Cookies[“mycookie”].Expires=DateTime.Now.AddDays(1); 删除cookie下的属性
HttpCookie acookie=Request.Cookies[“mycookie”];
acookie.Values.Remove(“userid”);
acookie.Expires=DateTime.Now.AddDays(1);
Response.Cookies.Add(acookie); 删除所有cookie,就是设置过期时间为现在就行了

int limit=Request.Cookies.Count-1;
for(int =0;i<limit;i++)
{
acookie=Request.Cookies(i)
acckie.Expires=DateTime.Now.AddDay(-1)
Response.Cookies.Add(acookie)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值