Http Session解惑

1、session问题

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

ContractedBlock.gif ExpandedBlockStart.gif Code
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    protected 
void btnTest_Click(object sender, EventArgs e)
    {
        
this.Response.Write(Session.SessionID);   
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>无标题页</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
<asp:Button ID="btnTest" runat="server" Text="test" OnClick="btnTest_Click" />
    
</div>
    
</form>
</body>
</html>

改变<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是否已创建了)

 

 

转载于:https://www.cnblogs.com/FallingAutumn/archive/2009/10/22/1588163.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值