zoukankan      html  css  js  c++  java
  • 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。

    ...待续!

  • 相关阅读:
    CreateDIBSection函数
    rand()和srand()GetTickCount函数用法
    PRIMARY LANGUAGE ID not a number
    videojs 动态加载视频
    [记录] nicescroll 在bootstrap tabs中工作
    [记录] js判断数组key是否存在
    li 水平排列并自动填满 ul
    [Laravel] 获取执行的Sql
    [Laravel]配置路由小记
    昨天冲动的搬到外面住了,oh yeah
  • 原文地址:https://www.cnblogs.com/zqzjs/p/4507749.html
Copyright © 2011-2022 走看看