Cookie的定义
Cookie是和站点相关的,并且每次向服务器请求的时候除了发送表单参数外,还会将和站点相关的所有Cookie都提交给服务器,是强制性的。
Cookie也是保存在浏览器端的,而且浏览器会在每次请求的时候都会把和这个站点的相关的Cookie提交到服务器,并且将服务端返回的Cookie更新回数据库,因此可以将信息保存在Cookie中,然后在服务器端读取、修改。服务器返回数据除了普通的html数据以外,还会返回修改的Cookie,浏览器把新拿到的Cookie值更新到本地浏Cookie。
Cookie的用法:
设置一个Cookie
Response.SetCookie(newHttpCookie("UserName",username));
获取一个Cookie
username=Request.Cookies["UserName"].Value;
可以通过设置属性Expires来设置Cookie的过期时间,如:
cookie.Expires = DateTime.Now.AddDays(1);
Cookie使用实践
用户名:
HttpCookie nameCookie = newHttpCookie("_base_0123456789_UserName", userName);
nameCookie.Expires = DateTime.Now.AddDays(14);
Response.SetCookie(nameCookie);
密码:
HttpCookie passCookie = newHttpCookie("_base_0123456789_PassWord", passWord);
passCookie.Expires =DateTime.Now.AddDays(14);
Response.SetCookie(passCookie);
清空Cookie:
Response.Cookies["_base_0123456789_PassWord"].Value= "";
Response.Cookies["_base_0123456789_UserName"].Value= "";
在MVC开发模式中,类默认继承了IRequiresSessionState,所以不需要用户再次继承就可以使用Session
Session的用法
Session(会话)有自动销毁机制,如果一段时间内浏览器没有和服务器发生任何的交互,则Session会定时销毁。这也就是为什么一段时间不操作,系统就会自动退出。
向Session放入一个值
Session.Add("Name","Key");
取出Session中的一个值
string key =(string)Session["Name"];
通过web.config设置Session的过期时间
<system.web>
<sessionState mode="InProc" timeout="30"/>
</system.web>
Session:
Session(“..”)中的..就好像变量名称,Session(“..”)=$$中的$$就是变量的值了。
你只需要写上句话,在这个用户的每个页面中都可以访问..变量中的值了。
在ASP.NET中用if(Session[ "UserName "] == null) 来判断Session变量的存在,
不能用if(Session["UserName "] == "")
或者if(Session["UserName "] == " ") ,否则会报错!
谨记:在ASP.NET中要在客户端所有页面都使用Session[..]变量,
其一定要在protected void Page_Load(object sender, EventArgs e)定义,否则其他页面的相同Session[..]为null,即不存在。
如果Session[..]变量定义了就不为null,即使初始化为"",即Session[..]=“”;
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
Session["accountMode"] = "studentID";
Session["studentID"] = "";
Session["identityNo"] = "";
}
}
在ASP.NET中设置Session的过期时间修改web.config配置。
具体修改方法如下,在web.config中进行如下配置
<system.web>
<sessionState mode="InProc" timeout="30"/>
</system.web>
在这里指的是Session过期时间为30分钟。也就是说30分钟后如果当前用户没有操作,那么Session就会自动过期了。
在调用Session的cs页中,Load事件里面写以下 Session.Timeout= 30;