1.Application 储存在服务端,没有时间限制,服务器关闭即销毁(前提是自己没写销毁方法) 
2.Session 储存在服务端,客户端(浏览器)关闭即销毁(若长时间不使用 且 浏览器未关闭的情况下, 默认自动销毁时间为20分钟)

3.Cookie 储存在客户端,由用户自己销毁

application:
程序全局变量对象,对每个用户每个页面都有效
session:
用户全局变量,对于该用户的所有操作过程都有效
cookie:
客户端信息存放对象,可以把用户的信息保存在用户的本地,
不必总是访问服务器
Application用于保存所有用户共用的数据信息,如果被保存的数据在应用程序生存期内根本不会改变或很少改变,用它。但是在asp.net中有个web.config,可能更好点。如果要使用application,一个需要考虑的问题是任何写操作都有要在application_onstart事件中(Global.asax)中完成。尽管使用application.lock和application.unlock方法来避免操作的同步,但是它串行化了对application的请求,当网站访问量大时会造成性能瓶颈。因此最好不要用它存取大的数据集
使用方法:
//存放信息
Application["test"] = "100";
//读取
String test = Application["test"].ToString();

Session 用于保存每个用户的专用信息,它的生存期是用户持续请求时间再加上一段时间(可以在web.config中设置,默认是20分钟)。Session中的信息保存在服务器的内存中,当然你也可以设置它的保存方法(如存在SQL数据库中)。由于用户停止使用程序后它仍然在内存中保持一段时间,因此使用Session对象保存用户数据的方法效率很低。对于小量的数据。使用Session还是一个不错的选择。

ASP Session的功能的缺陷
  目前ASP的开发人员都正在使用Session这一强大的功能,但是在他们使用的过程中却发现了ASP Session有以下缺陷:

  进程依赖性:ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序。所以当inetinfo.exe进程崩溃时,这些信息也就丢失。另外,重起或者关闭IIS服务都会造成信息的丢失。 
  Session状态使用范围的局限性:刚一个用户从一个网站访问到另外一个网站时,这些Session信息并不会随之迁移过去。例如:新浪网站的WWW服务器可能不止一个,一个用户登录之后要去各个频道浏览,但是每个频道都在不同的服务器上,如果想在这些WWW服务器共享Session信息怎么办呢? 
Cookie的依赖性:实际上客户端的Session信息是存储与Cookie中的,如果客户端完全禁用掉了Cookie功能,他也就不能享受到了Session提供的功能了。

//存
Session["user"] = "majcms";
//取
String username = Session["user"].ToString();

在web.config中进行如下配置
  <system.web>
  <sessionState mode="InProc" timeout="30"/>
  </system.web>

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

//创建、写入Cookie

HttpCookie cookie = Request.Cookies["MWS_User"];

if (cookie == null)

{

cookie = new HttpCookie("MWS_User");

}

cookie.Values.Set("UserID", strUserID);

Response.SetCookie(cookie);

二、读取cookie:

HttpCookie cookie = Request.Cookies["MWS_User"];

if (cookie != null && cookie["UserID"].ToString() != "")

{

Response.Write("cookie=" + cookie["UserID"].ToString());

}

//存
Response.Cookies["name"].Value = "majcms";
//取
String username = Response.Cookies["name"].Value;

---------------------------------------------------------------------

//写入
  protected void Button1_Click(object sender, EventArgs e)
  {
    HttpCookie cookie=new HttpCookie("MyCook");//初使化并设置Cookie的名称
    DateTime dt=DateTime.Now;
    TimeSpan ts = new TimeSpan(0, 0, 1,0,0);//过期时间为1分钟
    cookie.Expires = dt.Add(ts);//设置过期时间
    cookie.Values.Add("userid", "userid_value");
    cookie.Values.Add("userid2","userid2_value2");
    Response.AppendCookie(cookie);
    //输出该Cookie的所有内容
    //Response.Write(cookie.Value);//输出为:userid=userid_value&userid2=userid2_value2 
  }

  //读取
  protected void Button2_Click(object sender, EventArgs e)
  {

    // HttpCookie cokie = new HttpCookie("MyCook");//初使化
    if (Request.Cookies["MyCook"]!=null)
    {
      //Response.Write("Cookie中键值为userid的值:" + Request.Cookies["MyCook"]["userid"]);//整行
      //Response.Write("Cookie中键值为userid2的值" + Request.Cookies["MyCook"]["userid2"]);
      Response.Write(Request.Cookies["MyCook"].Value);//输出全部的值
    }
  }

  //修改Cookie
  protected void Button3_Click(object sender, EventArgs e)
  {
    //获取客户端的Cookie对象
    HttpCookie cok = Request.Cookies["MyCook"];
        
    if (cok != null)
    {
      //修改Cookie的两种方法
      cok.Values["userid"] = "alter-value";
      cok.Values.Set("userid", "alter-value");

      //往Cookie里加入新的内容
      cok.Values.Set("newid", "newValue");
      Response.AppendCookie(cok);
    }      
  }

  //删除Cookie
  protected void Button4_Click(object sender, EventArgs e)
  {

    HttpCookie cok = Request.Cookies["MyCook"];
    if (cok != null)
    {
      if (!CheckBox1.Checked)
      {
        cok.Values.Remove("userid");//移除键值为userid的值      }      else      {        TimeSpan ts = new TimeSpan(-1, 0, 0, 0);        cok.Expires = DateTime.Now.Add(ts);//删除整个Cookie,只要把过期时间设置为现在      }      Response.AppendCookie(cok);   

                  } 

              }

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

C#中Cookie,Session,Application的用法与区别?的更多相关文章

  1. 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂

    浅谈JS中的!=.== .!==.===的用法和区别   var num = 1;     var str = '1';     var test = 1;     test == num  //tr ...

  2. Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期

    servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...

  3. c# Cookie,Session,Application,Cache 四种缓存使用情景

    好记性不如烂笔头,记录一下C#缓存使用的情景模式....个人理解,不正之处,欢迎指正 讨论 Cookie,Session,Application,Cache 四种,有的缓存情景对人,有的缓存情景对事儿 ...

  4. JavaWeb -cookie&session&application

    cookie&session&application总结 Cookie[key-value](不是内置对象必须new): 1. Cookie 是由服务端生成的,在发送给客户端保存 2. ...

  5. 【Java学习笔记之二十九】Java中的"equals"和"=="的用法及区别

    Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: String str1 = new String(" ...

  6. 分组函数group by和Oracle中分析函数partition by的用法以及区别

    1.分组函数group by和Oracle中分析函数partition by的用法以及区别 2.开窗函数.

  7. lr 中cookie的解释与用法

    Loadrunner 中 cookie 解释与用法loadrunner 中与 cookie 处理相关的常用函数如下: web_add_cookie(): 添加新的 cookie 或者修改已经存在的 c ...

  8. flask中cookie,session的存储,调用,删除 方法(代码demo)

    # -*- encoding: utf-8 -*- # cookie,session的存储,调用,删除 from flask import Flask,make_response,request,se ...

  9. cookie,session,token的定义及区别

    参考了很多文章总结的. 1.cookie(储存在用户本地终端上的数据) 服务器生成,发送给浏览器,浏览器保存,下次请求同一网站再发送给服务器. 2.session(会话) a.代表服务器与浏览器的一次 ...

随机推荐

  1. asp.net-分析器错误消息: 服务器标记的格式不正确。

    大多数都是引号造成的 错误: <asp:LinkButton ID="btnRefund" runat="server" CommandName=&quo ...

  2. 打开SQL2008R2配置工具,提示远程调用失败[0x800706be]

    卸载了Microsoft SQL Server 2012 Express LocalDB,依然不行. 再卸载Microsoft SQL Server 2014 LocalDB,此时右边显示框已可以显示 ...

  3. 使用chosen插件实现多级联动和置位

    使用chosen插件实现多级联动和置位 首先写好第一个select,加上onchage属性之后,写onchange方法. <select data-placeholder="选择省份. ...

  4. event 自定义事件

    自定义事件 1 public class Program 2 { 3 public event EventHandler ehdl=null; 4 public Program() 5 { 6 ehd ...

  5. poj1125

    题目大意:哎,意思看了半天,看了别人的解释才明白,就是说从一个经纪人出发传递消息,直到所有人都收到消息 也就是说只要找到该经纪人到其它所有点的最短距离中的最大一个时间,就说明最后一个也收到消息了. 而 ...

  6. myeclipse注册码生成

    import java.io.*; /** * <一句话功能简述> * <功能详细描述> * * @author 程松 * @date 2013-11-8上午8:50:34 * ...

  7. out.print()与out.write()的区别

    out对象的类型是JspWriter.JspWriter继承了java.io.Writer类. 1)print方法是子类JspWriter,write是Writer类中定义的方法: 2)重载的prin ...

  8. php7 改为从栈上分配内在的思路

    php7的特点是规则上不从堆上分配内存,改为从栈上分配内存, 因为有些场景是从堆上分配内在后,还要手动释放内存,利用栈分配内在快的特点,在有需要的时候,再在堆上分配内在 但是栈上分配的内存,不能返回, ...

  9. Swift循环遍历集合方法

      第一种方式:for-in循环 OC延续了C语言的for循环,在Swift中被彻底改造,我们无法再使用传统形式的for循环了 遍历数组和字典: //遍历数组 let iosArray = [&quo ...

  10. POJ 2363

    #include<iostream> #include<stdio.h> using namespace std; int main() { //freopen("a ...