zoukankan      html  css  js  c++  java
  • [asp.net]cookie和session

    cookie是浏览器保存网页信息的一小块地方,用cookie,就能轻松实现浏览器的记住用户ID的功能,cookie是与域名相关的,只有同一域名下的网页才能读取该域名的cookie。

    能记住网页或者用户的某些信息固然方便,不过对于某些既要求保存,而且安全要求高的信息,却不能保存在cookie中,以防止用户篡改数据,这时候就用到了session。

    从功能上来说,cookie跟session是一致的,都是用于保存网页信息(少量信息),不过从媒介上来说是不同的,cookie是保存在用户主机上,session是保存在服务器上。

    session,准确来说是存放到服务器的内存上。由于是存放到内存上的数据,当网站的访问量大的时候,服务器就可能发生内存不足的问题,因此session存放的信息量必须小,而且当某session处于不再活动状态的时候就要释放内存,这样的话就要求session中有超时的概念:如果超过某个时间段,服务器没收到该用户的请求,则判断该session为死亡状态,进而释放内存。

    cookie的主要字段有两个,key和value,当要从cookie中取某个值的时候,通过指定key得到其value,如果不存在该key,那么当然会返回空。

    session主要字段有三个,ID,key和value,因为session是存放到服务器上的,服务器又有许多用户访问,所以要为不同用户分配不同ID,分配方法各种各样,有GUID,或者网站的用户ID等。

    以下为session的原理性代码

     1 public class SessionMgr
     2 {
     3     private static IDictionary<string ,IDictionary<string ,object>> data=new Dictionary<string,IDictionary<string,object>>();
     4     //data为保存session的全局变量,共三个字段:第一个string为ID,第二个string为key,第三个object为value  
     5     //等号右边的式子分配内存,为Dictionary对象,这样的话就能通过ID找到(key,value),然后再通过key查找value
     6     //左边的式子得到IDictionary接口,借口中实现各种操作Dictionary的方法,接口的具体实现可以去了解一下com
     7 
     8 
     9     public IDictionary<string, object> GetSession(string sessionID)
    10         //GetSession实现的是通过ID查找(key,value),再把该对象返回用于其它操作的方法
    11     {
    12         if (data.ContainsKey(sessionID))
    13             //如果存在该ID则返回其(key,value)
    14         {
    15             return data["sessionID"];
    16         }
    17         else
    18             //如果不存在该ID则用该ID新建一个(key,value),并返回
    19         {
    20             IDictionary<string,object> session=new Dictionary<string,object>();
    21             data["sessionID"] = session;
    22             return session;
    23         }
    24     }
    25 }
  • 相关阅读:
    struts2配置文件详解
    实体类和数据库映射--配置文件
    Hibernate常用配置文件详解
    本地计算机上的OracleOraDb11g_home1TNSListener服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。——Oracle监听器服务无法启动!
    关于远程访问Oracle数据库的设置(共享数据库)
    Log4J日志配置详解
    Java compiler level does not match the version of the installed Java project facet.问题
    Genymotion出现Unable to load VirtualBox engine问题--100%解决
    eclipse注解——作者,创建时间,版本
    web工程下的html中引用其他目录下的文件的path
  • 原文地址:https://www.cnblogs.com/TaigaCon/p/2641003.html
Copyright © 2011-2022 走看看