• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    asp.net中session的原理及应用详解
    Session简介丶特性
    --------------------------------------------------------------------------------
    1.Session是一种Web会话中的常用状态之一。
    2.Session提供了一种把信息保存在服务器内存中的方式。他能储存任何数据类型,包含自定义对象。
    3.每个客户端的Seesion是独立存储的。
    4.在整个会话过程中,只要SessionID的cookie不丢失,都会保存Session信息的。
    5.Session不能跨进程访问,只能由该会话的用户访问。应为提取Session数据的id标识是以Cookie的方式保存到访问者浏览器的缓存里的。
    6.当会话终止,或过期时,服务器就清除Session对象。
    7.Session常用于保存登录用户的ID.
    8.Session保存的数据是跨页面全局型的。
    --------------------------------------------------------------------------------
    Session的使用
    --------------------------------------------------------------------------------
    这里我写入一个例子,便于下面阐述。
    复制代码 代码如下:

    head runat="server">
    title>/title>
    script src="Scripts/jquery-1.4.1.min.js" type="text/javascript">/script>
    script type="text/javascript">
    function getSessionClick(action) { //这个函数是为了知道哪一个提交按钮被点击
    $("#hidlgc").val(""); //清空隐藏值
    $("#hidlgc").val(action); //给隐藏控件赋值
    }
    /script>
    /head>
    body>
    form id="form1" method="post" action="MySession.aspx">
    table>
    tr>
    td>账号:/td>td>input type="text" name="txtUid" />/td>`
    /tr>
    tr>
    td>密码:/td>td>input type="password" name="txtPwd" />/td>
    /tr>
    tr>
    td colspan="2">
    input type="hidden" value="" id="hidlgc" name="hidlgclick" />
    input onclick="getSessionClick('lgclick')" type="submit" value="登录" />
    input type="submit" onclick="getSessionClick('getSession')" value="获取session" />
    input type="submit" onclick="getSessionClick('backLg')" value="退出登录" />
    /td>
    /tr>
    /table>
    /form>
    /body>

    复制代码 代码如下:

    protected void Page_Load(object sender, EventArgs e)
    {
    //把用户id写入session中
    if (Request.Form["hidlgclick"] == "lgclick")
    {
    if(Request.Form["txtUid"].ToString()=="admin"Request.Form["txtUid"].ToString()=="admin") //判断用户登录
    {
    Session["userName"] = Request.Form["txtUid"].ToString(); //把用户id保存到session中
    Response.Write(Session["userName"].ToString()+"---点击登录"); //获取session,并写入页面
    }
    }
    //获取Session
    if (Request.Form["hidlgclick"] == "getSession")
    {
    if (Session["userName"] != null)
    {
    Response.Write(Session["userName"].ToString() + "---点击获取session"); //获取session,并写入页面
    }
    }
    //取消当前会话,相当于注销(退出登录)。
    if (Request.Form["hidlgclick"] == "backLg")
    {
    Session.Abandon();
    }
    }

    复制代码 代码如下:

    system.web>
    sessionState timeout="40">/sessionState> !---设置session的过期时间,时间以分钟为单位-->
     

    Session原理(根据上面例子阐述)
    --------------------------------------------------------------------------------
    一、session是怎么存储,提取的?
    1.在服务器端有一个session池,用来存储每个用户提交session中的数据,Session对于每一个客户端(或者说浏览器实例)是“人手一份”,用户首次与Web服务器建立连接的时候,服务器会给用户分发一个SessionID作为标识。SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在HTTP头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户端,而这个SessionID是一cookie的方式保存的在客户端的内存中的,如果想要得到Session池中的数据,服务器就会根据客户端提交的唯一SessionID标识给出相应的数据返回。
    2.输入正确的账号密码,点击登录,页面就会输出 “admin --- 点击登录”
    二、Session池中每个客户端的数据是怎么存储的?
    1.存储在Session池中的数据是全局型的数据,可以跨页面访问,每个SessionID中只存储唯一的数据,如:首先你这样设定:session["userName"]="admin",然后你在会话还没结束的session还没过期的情况下,你又设定:session["userName"]="123";这样这个SessionID没变,然而Session池中的数据则被覆盖。此时session["userName"]的值就是“123”,而不是其它。
    2.Session池中的数据不能跨进程访问。如:打开login.aspx页面写入session[“userName”]="admin";然后login页面不关闭,即此会话不结束,在这是你再在另外一个浏览器中打开一个login.aspx页面则session["userName"]=null
    3.输入账号密码,点击登录页面输出 “admin --- 点击登录” ,如果紧接着点击获取session按钮,则页面只输出"admin--- 点击获取session",如果页面不关闭,打开另外一个浏览器,点击获取session按钮,则页面没法应。
    三丶session的声明周期与销毁
    1.session存储数据计时是滚动计时方式。具体是这样的,如果你打开写入session,从写入开始,此页面如果一直没有提交操作,则默认时间是20分钟,20分钟后session被服务器自动销毁,如过有提交操作,服务器会从提交后重新计时以此类推,直至设定时间内销毁。
    2.可以设置session的销毁时间。上面代码有提到。
    四丶session中保存的数据是在服务端的,而每个用户如进行登录操作,都要进行session数据写入,所以建议慎用session,就是少用。
    您可能感兴趣的文章:
    • spring-session简介及实现原理源码分析
    • 详解SpringBoot中Session超时原理说明
    • Nodejs 和Session 原理及实战技巧小结
    • PHP中怎样保持SESSION不过期 原理及方案介绍
    • 解析php中session的实现原理以及大网站应用应注意的问题
    • JavaScript如何控制Session实现原理及代码
    • 深入解析Session工作原理及运行流程
    上一篇:ASP.NET Web API教程 创建Admin视图详细介绍
    下一篇:Web开发异常行为排查常用方法图文介绍
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    asp.net中session的原理及应用详解 asp.net,中,session,的,原理,