日期:2014-05-20  浏览次数:20808 次

SSH做登录成功,但拿不到当前用户名???
这个是action用户登录的方法:
Java code
 public ActionForward index(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
           UserForm userForm=(UserForm)form;
           TblUser user=biz.getLogin(userForm.getUser());
           String gotoPage="";
           if(user!=null){    
             request.getSession().setAttribute("user",user);              
              gotoPage="index";
           }else{
              request.setAttribute("message","对不起!您输入的密码有误!");
              gotoPage="login";
           }
           return mapping.findForward(gotoPage);
       }

这就是登录成功后显示的页面取值部分:
Java code
<marquee direction="left">
         <em> 管理员:${user.userName} 您好,感谢登陆后台管理系统</em>
         </marquee>

求高手们看看,有没有问题啊,就是拿不到值。打断点user里面都有值,但就是拿不出来。谢谢了。。。。


------解决方案--------------------
session要用sessionScope.user.userName吧
------解决方案--------------------
${sessionScope.user.userName}
------解决方案--------------------
EL表达式是默认从page范围开始找的
------解决方案--------------------
设置struts配置文件中对应action的属性: scope="session"
------解决方案--------------------
request.setAttribute("user",user);
------解决方案--------------------
lz既然说后台打印能得到user的值,但页面上又不显示,可能是你的web配置文件的 service的版本太低,像你用${}拿值的话,必须是版本2.4或以上的,像<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">这个版本是2.4的可以拿值,不知道lz是不是这个问题
------解决方案--------------------
探讨
}else{
request.setAttribute("message","对不起!您输入的密码有误!");
gotoPage="login";
}
return mapping.findForward(gotoPage);
只要是值,都拿不到。就像这个message在页面也拿不到,它那个消息框也只显示“message”没有别的内容。哎,真不知道是什么情况,什么值都拿不……

------解决方案--------------------
lz你存到session看看,我上面是从session拿值,你存入request,说不定你重定向了才没值,或者配置文件搞成重定向
------解决方案--------------------
marquee direction="left">
<%
TblUser user = (TblUser)request.getSession().getAttribute("user") ;
%>
<%=user.toString()%> <!--看看有没有结果?-->
<em> 管理员:${user.userName} 您好,感谢登陆后台管理系统</em>
</marquee>


------解决方案--------------------
探讨
把值存入reuqest,在后台用request能拿出来,但是在前台页面拿不出来啊?现在的问题是后台有数据
前台就是怎么也拿不出来,就是我刚才说的,连message里面的都拿不出来,哎。。。。。。。。。。。。。。求解。。。。。。。。。。

------解决方案--------------------
代码没问题 我怀疑你的页面支持EL表达式吗,
------解决方案--------------------
Java code

 public ActionForward index(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
           UserForm userForm=(UserForm)form;
           [color=#FF0000]System.out.println(userForm.getUserName());[/color]
           //试试输出的是什么
           TblUser user=biz.getLogin(userForm.getUser());
           String gotoPage="";
           if(user!=null){    
             request.getSession().setAttribute("user",user);              
              gotoPage="index";
           }else{
              request.setAttribute("message","对不起!您输入的密码有误!");
              gotoPage="login";
           }
           return mapping.findForward(gotoPage);
       }