request.getSession(false)和request.getSession(true)区别

request.getSession(false)和request.getSession(true)区别   
  
以下代码解释一下request.getSession(false)和request.getSession(true)区别的思路,并不是j2ee源代码   
  
个人觉得服务器中保存session是用map来保存的:   
例如定义一个保存所有session的map   
  
public GlobalClass   
{   
    public static final Map map=new HashMap();   
       
}   
  
  
在HttpServletRequest实现类(其中包括getSession()和getSession(boolean flag)方法)中获得map对象   
Map map=GlobalClass.map;//获得map对象   
  
public HttpSession getSession(boolean flag)   
{   
    //在request.getSession(true)情况下;   
    //如果map中不存在requestedSessionId(注:requestedSessionId是HttpServletRequest实现类中的一个属性,保存的是从客户端获取的session Id号)键的话,   
    //则创建一个HttpSession对象,并保存在map中   
    if(flag==true)   
    {   
         //不存在,创建   
         if(map.get(requestedSessionId)==null)   
         {   
             HttpSession session=new HttpSession的实现类();     
             //map中的键是session.getSessionId()值   
             map.put(String.valueOf(session.getSessionId()),session);   
             return session;   
         }   
  
         //存在   
         else  
         {   
             //requestedSessionId是HttpServletRequest实现类中的一个属性   
             HttpSession tempSession=(HttpSession)map.get(requestedSessionId);   
             //获得map中的session,这个时候要判断session有没有过期;   
             if(过期)   
             {   
                //将session中的attribute属性的值设为空   
                tempSession.setAttribute(null);   
                return tempSession;   
             }   
             else  
             {   
                return tempSession;    
             }   
         }     
    }   
       
    //在request.getSession(false)情况下;   
    //如果map中不存在requestedSessionId键的话,则返回null,不创建   
    else  
    {   
        //不存在,返回null   
         if(map.get(requestedSessionId)==null)   
         {   
             return null;   
         }   
         //存在   
         else  
         {   
             //requestedSessionId是HttpServletRequest实现类中的一个属性   
             HttpSession tempSession=(HttpSession)map.get(requestedSessionId);   
             //获得map中的session,这个时候要判断session有没有过期;   
             if(过期)   
             {   
                //将session中的attribute属性的值设为空   
                tempSession.setAttribute(null);   
                return tempSession;   
             }   
             else  
             {   
                return tempSession;    
             }   
                
         }   
    }   
        
}   
  
//request.getSession();跟request.getSession(true);是一样的   
public HttpSession getSession()   
{   
    return getSession(true);   
}  

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wzju64676266/archive/2009/12/13/4998968.aspx

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值