HashMap<String,Object> record = (HashMap<String,Object>)ss.getAttribute("userNameRecord"); 换成: HashMap<String,Object> record = (HashMap<String,Object>)sc.getAttribute("userNameRecord"); 试试呢,再检查下userNameRecord大小写、空格啥的。
本来你put进去了,你getServletContext时会又set一个new的对象 servletContext.setAttribute("userNameRecord", new HashMap<String,Object>());
明白了!!! servletContext.setAttribute("userNameRecord", new HashMap<String,Object>()); 要放在if( null == servletContext )里面, 即if( null == servletContext ){ CreateServletContext createServletContext = new CreateServletContext(); servletContext = createServletContext.getServletContext(); servletContext.setAttribute("userNameRecord", new HashMap<String,Object>()); } 谢了!!!
放在request里面不是更好么。。
不好,我这个servletContext.setAttribute("userNameRecord", new HashMap<String,Object>()); 定义了一个userNameRecord,专门记录的, 记录,自然是全局的了。
我定义的ServletContext 是static,
我没找到一步每次都创建,可否贴代码明示?我自己未找到
可否贴下代码,告知下是那个位置不停的new
换成:
HashMap<String,Object> record = (HashMap<String,Object>)sc.getAttribute("userNameRecord");
试试呢,再检查下userNameRecord大小写、空格啥的。
servletContext.setAttribute("userNameRecord", new HashMap<String,Object>());
servletContext.setAttribute("userNameRecord", new HashMap<String,Object>());
要放在if( null == servletContext )里面,
即if( null == servletContext ){
CreateServletContext createServletContext = new CreateServletContext();
servletContext
= createServletContext.getServletContext();
servletContext.setAttribute("userNameRecord", new HashMap<String,Object>());
}
谢了!!!
不好,我这个servletContext.setAttribute("userNameRecord", new HashMap<String,Object>());
定义了一个userNameRecord,专门记录的,
记录,自然是全局的了。
问题找到了,是GetServletContext.getServletContext()这里,每次调用,都重新setAttribute()一个新的HashMap了,这是我的失误