webform中Session和Cookie对象的用法

Posted 尘暮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webform中Session和Cookie对象的用法相关的知识,希望对你有一定的参考价值。

(一)Session

       跟Cookies一样用来存储用户数据

1、Session、Cookies对比

相同点:每一台电脑访问服务器,都会是独立的一套session或者Cookies,key值都一样,但是内容都是不一样的。

不同点:●Session的保存位置是保存在服务器内存上,Cookies保存在用户硬盘上

           ●Session没有持久的,在不对页面进行任何操作的情况下,它的保存周期就是20分钟;Cookies可以持久也可不持久,取决于用户

2、Session重点

Session不要滥用,也不要不用,滥用可能会造成服务器内容溢出,不用会造成资源浪费,因为内存中的数据提取及交互是最快的

3、用法

赋值:Session["key"] = 值;

取值:string a = Session["key"];

清除: Session["key"]=null;

注意:

  1、不要存大量数据在Session里

  2、临时Session取完无用后记得 = null清空它

 

//赋值
string s = TextBox1.Text;
Session["aa"] = s;
//取值
if(Session["aa"]!=null)
    Label1.Text=Session["aa"].tostring();

 

(二)cookies

简单摘要:    

       在用户电脑的硬盘上保存的一段文本

       http协议包括浏览器,允许站点在用户电脑上以Cookies的形式来临时保存数据

       如果没有设置保存时间,即会话cookies时:

1、如果你20分钟内没有再次刷新页面,那么此cookies就会自动删除掉

2、当前访问连接中断,如关闭浏览器,那么cookies会自动删除

        如果设置保存时间,到时间后,cookies会自动删除 

       当然,cookies的保存与否,关键在用户,用户可以手动清楚cookie。

       作用:保持用户的登陆状态

用法:

1、获取账号:Response.Cookies["user"].Value = TextBox1.Text;

2、给该账号设置登录保持的过期时间:Response.Cookies["user"].Expires = DateTime.Now.AddDays(7);

3、清除cookies:Response.Cookies["user"].Expires = DateTime.Now.AddDays(-5); 只要让数值为负即可,表示已过期几天

 

 

//赋值
string s = TextBox1.Text;
Response.Cookies["username"].Value = s;
if (CheckBox1.Checked)
            {
                Response.Cookies["username"].Expires =DateTime.Now.AddDays(3);//设置Cookie的过期时间
            }
//取值
if (Request.Cookies["username"] != null)
            Label1.Text = Request.Cookies["username"].Value;

Cookie

Server.Transfer("Default2.aspx);使用此方法,可以在不变动地址栏显示的地址的情况下跳转页面(比如一定要用地址栏传址但又不想让用户看到所传变量时)

 

建立登录Login页面:

前台代码:

复制代码
<form id="form1" runat="server">
    用户名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
        密码:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
        <asp:CheckBox ID="CheckBox1" runat="server" /><label for="CheckBox1">记住登陆状态7天</label><br />

        <asp:Button ID="Button1" runat="server" Text="登陆" />
    </form>
复制代码

后台代码:

复制代码
protected void Page_Load(object sender, EventArgs e)
    {
        Button1.Click += Button1_Click;
    }

    void Button1_Click(object sender, EventArgs e)
    {
        //取值,数据库查询
        bool ok = new UsersDA().Select(TextBox1.Text, TextBox2.Text);
        if (ok)
        {
            //若查到数据,即可以登陆成功
            Response.Cookies["user"].Value = TextBox1.Text;

            if (CheckBox1.Checked)
            {
                //给cookies设置保存时间
                Response.Cookies["user"].Expires = DateTime.Now.AddDays(7);
            }
            Response.Redirect("Main.aspx");
        }
复制代码

主界面Main后台代码:

复制代码
 //判断,cookies是否为空,不为空,根据cookies传的值查询
        if (Request.Cookies["user"] != null)
        {
            Users u = new UsersDA().Select(Request.Cookies["user"].Value);

            Labdl.Text = u.NickName;
            Literal1.Text = ",欢迎你!";
        }
        //为空,跳转登录页面
        else
        {
            Response.Redirect("Login.aspx");
        }
复制代码


有登陆就有退出登录:

Main主界面退出登录前台代码:

<asp:Button ID="Btntc" runat="server" Text="退出登陆" />

后台代码(清除cookies):

复制代码
void Btntc_Click(object sender, EventArgs e)
    {
        //1清除cookies
        Response.Cookies["user"].Expires = DateTime.Now.AddDays(-5);
        //2刷新页面/跳到登陆页面
        Response.Redirect("Login.aspx");
    }

以上是关于webform中Session和Cookie对象的用法的主要内容,如果未能解决你的问题,请参考以下文章

C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段

webform内置对象 跨页面传值

webform中Session和Cookies对象的用法登录保持

Webform 内置对象 Session对象Application全局对象,ViewState

webform(内置对象)

webform-内置对象