Cookie 和 Session

来源:互联网 发布:多益网络和37和4399 编辑:程序博客网 时间:2024/06/06 20:06

1、通过URL传递
   两个页面之间传递数据最好、后续麻烦最少、最简单的方法就是通过URL传递。
 优点:简单,直接,明确知道发给谁,数据不会乱。
 缺点:1、如果多个页面或者不确定页面之间要传那么就需要每次跳转都带着;2、不保密。

2、Cookie
      1、如果想自由的传递和读取,用Cookie。Cookie是和站点相关的,并且每次向服务器请求的时候除了发送表单参数外,还会将和站点相关的所有Cookie都提交给服务器,是强制性的。Cookie也是保存在浏览器端的,而且浏览器会在每次请求的时候都会把和这个站点的相关的Cookie提交到服务器,并且将服务端返回的Cookie更新回数据库,因此可以将信息保存在Cookie中,然后在服务器端读取、修改。服务器返回数据除了普通的html数据外,还会返回修改的Cookie,浏览器把拿到的Cookie值更新本地浏览器的Cookie就可以。
    2、在服务器端控制Cookie案例,实现记住用户名的功能。
               1》设置值的页面:Response.SetCookie(new HttpCookie("UserName",username));  //生命周期是浏览器的生命周期。
                     设置值的页面:
                                           HttpCookie cookie = new HttpCookie("Name", "xlt");
                                           cookie.Expires = DateTime.Now.AddDays(3); //表示三天后过期
                                           context.Response.SetCookie(cookie);
               2》读取值的页面:username = Request.Cookies["UserName"].Value;
    3、如果不设定Expires那么生命周期则是关闭浏览器则终止,否则“最多”到Expires的时候终止。
    4、Cookie的缺点:还不能存储过多信息,机密信息不能存,cookie是可以被清除的,不能把不能丢的数据存到Cookie中;Cookie的大小是有限制的,一般为几K,几百K
    5、Cookie无法跨不同的浏览器。

3、submit :只有被点击的submit的 name和value会被传送给服务器。

Session的原理
1、Cookie不能存储机密数据。如果想储存,可以保存一个Guid到Cookie中,然后在服务器中建立一个以Guid为Key,复杂数据为Value全局Dictionary。放到Application中。
2、asp.net已经内置了Session机制,把上面的例子用ASP.NET Session重写。普通的HttpHandler要能够操作Session,要实现IRequiresSessionState接口。
3、Cookie是存在客户端的,Session是存在服务器端的。目的是一样的:保存和当前客户端相关的数据(当前网站的任何一个页面都能取到Session、Cookie)
4、Session有自动销毁机制,如果一段时间内浏览器没有和服务器发生任何的交互,则Session会定时销毁,这也就是为什么一段时间没操作,系统就会自动退出。

asp.net 如何设置单个session 过期时间?
在WEB.CONFIG中配置<sessionState mode="InProc" timeout="60"/>这是60分钟后过期。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

0 0