解决方案 »

  1.   

    public String execute(){
             
            UserDao dao = new UserImpl();
            User user = dao.findname(username);
            if(user != null && user.getPassword().equals(password)){
                ActionContext.getContext().getSession().put("user", user);
                   return "input";
            }else if(username==null||password==null||username!=user.getUsername()||password!=user.getPassword()){
                System.out.println("inter username = " + username + "," + "inter password = " + password);
                ActionContext.getContext().getSession().put("user", "用户名密码错误");
                return "error";
            }else{
                return "error";
            }
        }这个方法加个断点看看,有没有塞进去
      

  2.   

    if(user != null && user.getPassword().equals(password)){
                ActionContext.getContext().getSession().put("user", user);
                   return "input";
            }else if(username==null||password==null||username!=user.getUsername()||password!=user.getPassword()){
                System.out.println("inter username = " + username + "," + "inter password = " + password);
                ActionContext.getContext().getSession().put("user", "用户名密码错误");
                return "error";
            }else{
                return "error";
            }我怀疑你的前两个if都没进去,而是很不幸的进到了最后一个if
    怎么说呢,要验证这么多,还是尽量写成方法吧,这么多if的判断,很容易晕的
      

  3.   

    发下几个问题:
    1、if(user != null && user.getPassword().equals(password)){
                ActionContext.getContext().getSession().put("user", user);
                   return "input";
            }
    成功了,为什么还返回input视图?
    2、if(null!=user){
                    System.out.println("user = " + user);
                    arg0.invoke();//这里应该return arg0.invoke();吧,不然下面的继续执行,实际拦截器返回的是strutsLogin。
                 
                }
              
                System.out.println("外user = " + user);
                return "strutsLogin";
      

  4.   


    断点加了,action好像没有走
      

  5.   


    返回跳转到struts视图啊 , retrun arg0.invoke() 是个问题,不过加了 还是不好使
      

  6.   

    日志打印出来的东西呢?我们看看走到了哪些位置,而且看你上面是username,下面是user,确定是这样的吗?两串代码不是应该一致的吗
      

  7.   

    user 是我session传过去的值。两个类我分别做了输出,但只有拦截器的 “外"user” 输出了null,其他没有输出
      

  8.   

    如果我在JSP页面 request.getSession().setAttribute("user", user); 拦截器是能取到值的,现在拦截器取不到Action中的值
      

  9.   

    问题解决了,是我烂错Action了,跟拦截器交互的Action是不能拦的,只能从他那取值,拦截的是登录之后的 Action,感谢你们的回答