ASP.NET中Application、Session和Cookie

一、Session

session是会话变量,只要同一个浏览器没有被关闭,session对象就会存在。因此在同一个浏览器窗口中,无论向服务器发送多少请求,session对象只有一个。 但是如果在一个会话中,客户端长时间不向服务器发出请求,session对象就会自动消失。这个时间取决于服务器,但是我们可以通过编写程序进行修改这个session的生命周期的时间。session.setMaxInactiveInterval(10000);//用来设置session的有效期为10000秒,超出这个范围将失效。

并且通过session对象可以存储或者读取客户的相关信息,例如用户名或购物信息等,可以通过session对象的setAttribute(String name,Object obj)方法和getAttribute(String name)的方法实现。注意的是getAttribute()方法的返回值是Object类型,如果将获取到的信息赋给String类型的变量,则需要进行强制类型转换或者调用其的toString()方法。
 

session.setAttribute("user","小名");
String user=(String)session.getAttribute("user");

Session采用键值对,也就是说ID存放客户端,而值放在服务器端。
是通过用户的ID去找服务器上对应的值,这种方式值放置在服务器端,
有个时间限制,时间到则服务器自动释放.

特性:Session对象可以不需要Add方法进行创建,直接使用Seesion[“变量名”]=变量值的语法可以进行Session对象的创建

TimeOut:传回或设置Session对象变量的有效时间,如果在有效时间内没有任何客户端动作,会自动注销

Abandom:用以结束当前会话并清除对话中的所有信息,如果用户重新访问页面,则可以创建新会话

Clear:清除所有的Session对象变量,但不结束会话

如果不存在Session对象, IF(Session[“ID”] == null) {…}

二、Application

Application它类似于系统的全局变量,用于保存所有程序中的公有数据。它在服务器启动时自动创建,在服务器停止时销毁。当application对象没有被销毁的时候,所有用户都可以享用该Application对象。它的生命周期可以说是最长的。但是其应用程序初始化的参数是要在web.xml文件中进行设置的,通过标记配置应用程序初始化参数。也就是说同时再打开另一个浏览器,他们使用的都是同一个Application对象。(实现在线用户统计)

     protected void Application_Start(Object sender, EventArgs e)
     {
        Application["CurrentGuests"]=0;//初始花为0;
        fileStream = File.Open(Server.MapPath("counts.text"),FileMode.OpenOrCreate);//文件不存在,创建文件
        reader = new StreamReader(fileStream);//要读取的完整路径
        Application["AllGuests"] = Convert.ToInt32(reader.ReadLine()); //从当前流中读取一行字符并将数据作为字符串返回
        reader.Close();//关闭流
      }
 
    protected void Session_Start(Object sender, EventArgs e)//当用户访问网站时,在线用户+1,总访问数+1
     {
        Application.Lock();//同步,避免同时写入
        
        Application["CurrentGuests"] =(int)Application["CurrentGuests"]+ 1;//总在线用户数
        Application["AllGuests"] =(int)Application["AllGuests"]+ 1;//访问网站的总用户数
        fileStream = new FileStream(Server.MapPath("counts.text"),FileMode.OpenOrCreate,FileAccess.ReadWrite);//
        writer = new StreamWriter(fileStream);//实现一个写入流,使其以一种特定的编码向流中写入字符
        writer.WriteLine(Application["AllGuests"].ToString());//把访问网站的总用户数再次写入到文件
        writer.Close();//关闭写入流
 
        Application.UnLock();//同步结束
     }
    
    protected void Session_End(Object sender, EventArgs e)//当前用户退出网站时,在线用户数量-1,
    {
        Application.Lock();
        Application["CurrentGuests"] =(int)Application["CurrentGuests"] - 1;//总在线用户数量-1
        Application.UnLock();    
 
    }

三、Cookie

Cookie对象保存在客户端,Session和Application对象保存在服务器端.

所有Cookie对象能够长期保存,Web应用程序可以通过获取客户端的Cookie值来判断用户的身份来进行验证.

无需任何服务器资源. 缺点,大小限制, 如果客户端配置禁止Cookie设置,则被限制使用, 安全风险,可以伪装.

Name:获取或设置Cookie的名称

Value:获取或设置Cookie的Value

Expires:获取或设置Cookie的过期的日期

Version:获取或设置Cookie符合的HTTP维护状态的版本

Add:增加Cookie变量

Clear:清除Cookie集合内的变量

Get:通过变量名称或索引得到Cookie的变量值

Remove:通过Cookie变量名或索引删除Cookie对象
Cookies则有两种方法 , 一种方法是把值保存在浏览器的变量中 , 当浏览器关闭时结束 , 另一种方法是保存在硬盘中 , 只要时间不过期 , 下次还可使用.
Cookie用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置Cookie失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远不会过期.Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4096,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性.使用Cookie对象保存的代码如下:

//存放信息
Response.Cookies["UserID"].Value="0001";
//读取信息
string UserID=Response.Cookies["UserID"].Value;
 
HttpCookie MyCookie=new HttpCookie("MyCookie"); //创建Cookie对象
MyCookie.Value=Server.HtmlEncode("我的应用程序"); //Cookie赋值
MyCookie.Expires=DataTime.Now.AddDays(5);  //Cookie的持续时间

Response.AppendCookie(MyCookie);  //添加Cookie
HttpCookie GetCookie=Request.Cookies["MyCookie"];  //获取Cookie

GetCookie.Value.ToString()  输出Cookie值

GetCookie.Expires.ToString()  过期时间

创建对象之后立即读取 一些网站和论坛中经常使用Cookie.当用户浏览并登录在网站后,如果用户浏览完毕并退出网站时,Web应用可以通过Cookie方法对用户信息进行保存,当用户再次登录时,可以直接获取客户端的Cookie的值而无需用户再次进行登录操作. 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值