如何在Action中获取用户session中的值?
@Override
public ActionForward list(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
buzzLog.info( "-@Override-list--- ");
int ret = 1;
HttpSession session = request.getSession();
String val = (String) session.getAttribute( "test ");
if ( val == "yes ") {
super.list(mapping, form, request, response);
return mapping.findForward(LIST);
}
val取到的值是空的
在用户登录的时候已经setAttribute( "test ", "yes ");
------解决方案--------------------判断写错了吧,应该是
if (val.equals( "yes ")){
super.list(mapping, form, request, response);
return mapping.findForward(LIST);
}
------解决方案--------------------不好意思,想着application了.
不是==啦...是val.equal( "yes ")
------解决方案--------------------那就session没获取到拜,在仔细看看你设置session的时候有没错。
或者session这个会话有没有存在。
------解决方案--------------------问题可能出在:
1 不知道lz判断val是空的,是不是通过这个语句判断的 if ( val == "yes ") 还是通过debug判断的,改为 ` "yes ".equals(val)看看
2 HttpSession session = request.getSession();
改为:
HttpSession session = ((HttpServletRequest) request).getSession();
看看!
------解决方案--------------------看看你前面的页面有没有frame或者你使用了 response.sendRedirect();
window.location忘了是不是还在同一会话了。
------解决方案--------------------一个页面有几个frame,不同的frame是不同的session.你可以改成iframe试试。
------解决方案--------------------不好意思多写了一个request
应该是:
我在action 里就是这么接的:
String str = (String)request.getSession().getAttribute( "user_id ");
存的时候:
request.getSession().setAttribute( "user_id ", "123 ");
------解决方案--------------------把struts-config.xml贴出来,我怀疑是不是你这个action配置的时候,没有写scope= "request "
------解决方案--------------------request.setAttribute( "login ", "yes ");
request.setAttribute( "test ", "yes ");
val = (String) session.getAttribute(attribute);
-----------------------------------------------------
存在reqeust中,去session中能取到才怪。
-----------------------------------------------------
<c:redirect url= "/aue/calendar.do "/>
这句话,重定向了,不在同一session内。
------解决方案--------------------顶ls,楼主在存对象的时候存错了位置