zoukankan      html  css  js  c++  java
  • Http Session解惑

    1、session问题

    为什么如下页面,sessionId会不一样?这让我着实困惑了一段时间。

    Code

    改变<script>脚本中的代码,增加一个Session存取,再运行看结果,如下:

    protected void btnTest_Click(object sender, EventArgs e)
    {
        Session[
    "test"= "test";
        
    this.Response.Write(Session.SessionID);   
    }
        

    可知sessionID不变了。以上说明什么?

    2、session原理

    这里简单描述下,详情可参考:http://www.cnblogs.com/athrun/archive/2008/11/26/1341442.html

    session是服务端机制,是为了鉴别客户端的唯一性而建立的,所以session是具有唯一ID的对象。当客户端访问服务器时,服务端检查是否客户端是否已经有session了(参见session客户端存储),有则不创建了并通过此session可唯一确定客户端。如没有,则当请求资源用到了session时(利用session保存信息),服务端会创建session,并将此session发回给客户端。

    通过2,我们可知为什么会出现上面的情况了,即:code1中,因为没用到session,所以服务端不会创建session,其sessionID是临时产生的。修改成code2即可。

    3、session客户端存储

    session的id是在客户端保存的(这样每次服务端才能区分开客户端)。存储有3种方式:cookie、url重写 和 隐藏表单。

    一般都用cookie保存,但因cookie可被禁用,所以也可采用url重写,或者 隐藏表单(现在很少使用了)。

    这里最要注意的就是session被创建的时机:并非访问服务器就会创建session,而是在有需要时才创建。

    我的困惑:

    问题1:code1中的sessionId的确产生了,这个仅是一个全局ID还是也创建了session,只是session没有被发到client.如果是后者,又是如何实现的呢? (请参见我的下一篇分析:sessionId在cookie中的诞生时间点)

    问题2:如何才能获取到服务端所有的session对象(我想通过此渠道来判断1中的session是否已创建了)

  • 相关阅读:
    第一次留下自己的随笔
    NSOperation多线程方式
    NSThread多线程方式
    GCD多线程机制
    GCD创建单例常用的两种方法
    线程锁
    使用KVO模式,设置应用角标数字
    keyChain RSA加密 KVO
    NSURLConnection网络处理和NSURLSession网络处理
    UIAlertView和UIAlertViewController
  • 原文地址:https://www.cnblogs.com/FallingAutumn/p/1588163.html
Copyright © 2011-2022 走看看