在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
注:本文主要是参考《ASP.NET 夜话》,加入了自己的整理 做asp.net开发时无需new就能使用的对象,如: Request ,Response ,Server ,Session ,Cookie ,Application
Session[“UserName”]=”zhoufoxcn”;
一个网站里用到Session的地方肯定不止一个,所以在设置和获取Session的时候通过Session的名在来操作,并且Session被设置成能存储任意类型的对象(即Object类型),所以获取Session的时候要根据设置的时候的实际类型进行响应的强制类型转换(当然如果在Session中存放像int/byte/short这样的数据类型,获取Session的值算是一种拆箱操作而不是强制类型转换),对于上面的Session,获取Session的值的代码如下:
string username=(string)Session[“UserName”];
对于上面的代码,有个问题需要注意:当没有设置相应的Session或者Session因为超过生命周期而被销毁时,上面的代码有可能抛出异常。我们可以先判断是否存在指定名称的Session,如果不存在就不用获取了,仅当存在的情况下才获取Session的值,上面的代码可以改进如下:
string username=(string)Session[“UserName”];
string userName; if(Session["UserName"]!=null) { //当指定名称的Session存在时,获取指定Session的值 userName=(string)Session["UserName"]; }
Cookie对象和Session对象一样也是用来保存特定的用户相关的数据,与Session不同的是Cookie保存在客户端而不是服务器上,每次客户端发出请求的时候都会把Cookie一起发送到服务器,服务器每次响应客户端请求的时候会重新把Cookie发送到客户端保存。 会话cookie和持久cookie的区别
HttpCookie cookie = new HttpCookie("UserName", "zhoufoxcn");
Response.Cookies.Add(cookie); 获取Cookie就是从客户端的请求对象中找到对应名称的Cookie,当然也有可能出现Cookie不存在的情况,所以在获取之前也需要检查指定名称的Cookie是否存在,代码如下:
string userName;
if (Request.Cookies["UserName"] != null) { userName = Request.Cookies["UserName"].Value; } Session和Cookie一般用来一些针对特定用户的信息,比如用于保存用户名等,因为是针对特定用户的,所以不会出现张三用户名保存在Session或者Cookie中之后再去获取这个值的时候得到的是李四的用户名。但是在某些情况下,我们又希望保存一些共有信息,这样大家都能设置或者获取,比如自从服务器启动以来某个页面被打开的次数,这就需要用Application了。
cookie的期限
HttpCookie cookie=Request.Cookies["name"];//获取客户端Cookie
if (cookie == null)//如果不存在该名称的Cookie { cookie = new HttpCookie("name", "zhoufoxcn"); cookie.Expires = DateTime.Now.AddDays(10);//设置cookie保存10天 Response.Cookies.Add(cookie);//将cookie发送到客户端保存 } else { Response.Write("cookie中保存的数据是:" + cookie.Value); cookie.Expires = DateTime.Now.AddYears(-1);//设置cookie一年前过期 Response.Cookies.Add(cookie);//将cookie发送到客户端,这样就能删除掉cookie }
6、Application对象
Application与Session区别
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>Application和Session的例子</title> </head> <body> <% //如果没有设置名为"ApplicationCount"的Application int applicationCount=1; int sessionCount=1; f(Application["ApplicationCount"]==null) { Application["ApplicationCount"]=1; } else//否则取出该Session,并且在当前值上加1 { applicationCount=(int)Application["ApplicationCount"]+1; Application["ApplicationCount"]=applicationCount; } //如果Session["SessionCount"]为空,即没有设置该名字的Session f(Session["SessionCount"]==null) { Session["SessionCount"]=1; } else { sessionCount=(int)Session["SessionCount"]+1; Session["SessionCount"]=sessionCount; } Response.Write("当前页面由Application记录到的被访问了"+applicationCount+"次<br/>"); Response.Write("当前页面由Session记录到的被访问了"+sessionCount+"次<br/>"); %> </body> </html> 结果如下(按刷新也是一样)
|
请发表评论