问题描述
为什么在登陆的Action中的request.getSession().setAttribute("user",user)放值;而在其他的Action中用request.getSession().getAttribute("user");中取不到值呢??????????在线等十万火急。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
解决方案
解决方案二:
请问你登陆了么???请问你登陆的时候,你的判断方法有问题吗?根据用户名和密码查找到用户了吗?还是为null列??自己一个环节一个环节的检查....Noonecanhelpyoubutyouself
解决方案三:
有啊,传值的时候有。有时候管用。又是不管用。
解决方案四:
调试下看哪步错误
解决方案五:
你这里放进去的user是个对象吧如果随便拿到话肯定取不到
解决方案六:
用HttpSessionsession=getSession(fasle)if(session==null){log("sessionisnull")return;}Useruser=(User)session.getAttribute("user");if(user==null){log("userisnull")return;}
解决方案七:
确定放进去了吗
解决方案八:
传个参数。HttpSessionsession=request.getSession(false);可能:request.getSession().setAttribute("user",user)放值,user本身就是空的;而在其他的Action中用request.getSession().getAttribute("user")当然也就取不到了。也有可能其他的Action不是同一个浏览器发送的请求。
解决方案九:
我也碰到这样的问题:login.jsp请求loginaction,在action里setAttribute,然后跳转到loginsuccess.jsp中,在这个页面里可以直接session.getAttribute。但是当在loginsuccess.jsp中利用AJAX请求另一个action B时,B不能request.getSession().getAttribute。想弄明白session是不是由第一个JSP隐式创建,然后,这个session可以在之后的哪些文件中获得?由JSP发出的AJAX请求重定向的文件不能获得这个session吗?大家一起研究一下。
解决方案十:
调试下到底那个值有没有传进去比如你在传的时候可以先打印出来看看到底得没有得到值
解决方案十一:
确定放进去了吗?还是User对象本身就是空的啊?
解决方案十二:
1放进去的是不是空?中间有没有清空或者session.invalidate()2如果struts1,确保request是从方法参数中传入,而不是作为Action的成员变量,那有线程安全问题——Action实例是复用的。其他代码/框架/类库也请考虑次问题。3你前端的页面是否存在Frameset/iframe之类的问题4IE6的bug,由window.open(url,"TARGET")之类引起,前一个IE6进程(一个IE6进程对应一个iexplore.exe,同时对应一个session)打开了一个叫做"TARGET"的窗口。后面的IE6进程(新的exe/session)如果仍然执行window.open(url,"TARGET")或者<ahref="url"target="TARGET">,目标窗口仍然是进程1对应的窗口,导致父子俩窗口属于不用的进程、SESSION,其他“古董浏览器”尤其是不支持多窗口模式的,都有可能有此问题5你应该没用到。集群问题先打印每次session的id,看看是不是一个session,然后配置session的listener,看看,何时动了
解决方案十三:
该回复于2011-03-28 15:12:32被版主删除
解决方案十四:
肯定取不到咯,你真是笨!jsp都没处理咯!
解决方案十五:
想解决也很简单
解决方案:
1.setAttribute("user",user)里面的user对象可能为NULL,你要设置user对象的属性是不是没有设置2.getAttribute("user")你进行类型转换没有。
解决方案:
引用15楼lffsonic的回复:
1.setAttribute("user",user)里面的user对象可能为NULL,你要设置user对象的属性是不是没有设置2.getAttribute("user")你进行类型转换没有。
类型转换的话,IDE会提示错误,很大可能是情况1
解决方案:
该回复于2011-03-29 14:27:11被版主删除