C#中的Session

一:

网站开发中,为了保存用户信息我们就会用到session。

Session具有以下特点:
(1)Session中的数据保存在服务器端;
(2)Session中可以保存任意类型的数据;
(2)Session默认的生命周期是20分钟,可以手动设置更长或更短的时间。

我们在aspx页面中的调用一般只需要这么写:<%=session["key"]=value %>;

获取session时一般这么写:string username=session["username"],但是在给对象赋值的时候我们需要注意两点

1:判断是否为null

2:类型的转换

例子:

//使用Session对象来传送用户的登录名,在另一页中将用户的登录名显示出
//使用Session对象保存用户登录名的代码如下:
Session.Remove("UserName");
Session["UserName"] = txtName.Text;
Response.Redirect("a.aspx");

这里用的重定向去跳转到指定页面;是要注意:如果我们的请求是通过Ajax方法的时候,重定向是不起作用的!

好,那这里让我们分析一下Response.Redirect的跳转原因:

->Response.Redirect是本地跳转,并不服务端跳转;是往浏览器端输出一个响应码,这个响应码为301或者302,告诉浏览器跳转。

二:

a:使用Session变量
使用Session变量是可以在页面间传递值的的另一种方式,在本例中我们把控件中的值存在Session变量中,然后在另一个页面中使用它,以不同页面间实现值传递的目的。但是,需要注意的是在Session变量存储过多的数据会消耗比较多的服务器资源,在使用session时应该慎重,当然了,我们也应该使用一些清理动作来去除一些不需要的session来降低资源的无谓消耗。

释放方式:session.remove();

     session.removeAll();

       session.Abandon();

b:session传递数组的用法:

      

protected void Button1_Click(object sender, EventArgs e)
    {
        ArrayList sArr = new ArrayList();
        sArr.Add("0");
        sArr.Add("1");
        sArr.Add("2");
        sArr.Add("3");
        sArr.Add("4");
        sArr.Add("5");
        Session["Array"] = sArr;

        ArrayList sRarr = new ArrayList();
        string ssMsg = "";
        sRarr = (ArrayList)Session["Array"];
        ssMsg = sRarr[3].ToString();
        Response.Write("<script>window.alert('" + ssMsg + "')</script>");
    }

 

c:使用Session验证用户登录

if (txtName.Text == "mr" && txtPassword.Text == "mrsoft")
{
Session["UserName"] = txtName.Text.Trim();
Response.Redirect("a.aspx");
}

Session对象默认失效期为20分钟,用户也可以在Web.Config中对其进行设置。

在用session的时候让我想到我用过的viewdata,我感觉这两个都能起到传值的作用。

MVC中的弱类型,主要有ViewData和TempData
实则上应该都是字典,用于键值对应关系,分别对应ViewDataDictionary以及TempDataDictionary。
ViewData只能在当前的HTTP请求中,不会像session一样可以把数据带到下一个HTTP请求。
TempData跟ViewData的区别是他是临时性的,例如取代一些viewstatus一样保存客户端的上一次数据。他的内部是通过session来保存的。只要被取用一次后就自动清除session。

...待续!

posted on 2015-05-16 13:57 qize 阅读(...) 评论(...) 编辑 收藏

导航

公告