论坛首页 入门技术论坛

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

浏览 2770 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-12-13   最后修改:2009-12-13
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);
}

 

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics