用Struts1 + hibernate登陆的时候的问题,一个用户名可以用多个密码(只要是数据库里的密码)登录,就是不能一个用户名一个密码登录,大家指点下怎么弄,代码如下:先建个接口
public interface UserDao {  
public int isExist(String username,String password);
}
然后具体实现类
public class UserDaoImpl implements UserDao {    public int isExist(String username, String password) {
Session session = (Session) new Configuration().configure()
.buildSessionFactory().openSession(); Query query = session.createQuery("from Users u where u.username=?");
query.setString(0, username);
List list = query.list();
if (null == list || 0 == list.size()) {
return -1;// 用户名不存在
}
Query query2 = session
.createQuery("from Users u where u.username=? and u.passwd=?");
query2.setString(0, username);
query2.setString(1, password);
List list2 = query.list();
if (null == list2) {
return -2;// 密码错误
}
Iterator it = list.iterator();
Users user = (Users) it.next();
return user.getUserid();
}
}
下面是Action调用那个方法
public class LoginAction extends Action {
/*
 * Generated Methods
 */ /** 
 * Method execute
 * @param mapping
 * @param form
 * @param request
 * @param response
 * @return ActionForward
 */
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
String username=loginForm.getUname();
String password=loginForm.getUpass();
UserDao userdao=new UserDaoImpl();
   int state=userdao.isExist(username, password) ;
if(state==-1){
  return mapping.findForward("er");
}else if (state==-2){
   
  return mapping.findForward("er");
  }
else  {
request.setAttribute("myName",username);
  request.setAttribute("myPasswd",password);
return mapping.findForward("suc");
}

解决方案 »

  1.   

    List list2 = query.list();
    if (null == list2) {
    return -2;// 密码错误
    }
    这个判断有没有问题,是不是哪怕没有一条记录,query.list()也不会等于null
      

  2.   

    把你在程序中执行的sql全部打印出来,然后在数据库独立进行查询,看其结果。
      

  3.   

    Query query2 = session
    .createQuery("from Users u where u.username=? and (u.passwd=? or u.passwd1=?)");用or隔开就可以了
      

  4.   

    Query query = session.createQuery("from Users u where u.username=?");
     query.setString(0, username);
     List list = query.list();
     if (null == list || 0 == list.size()) {
     return -1;// 用户名不存在
    }
    Query query2 = session
     .createQuery("from Users u where u.username=? and u.passwd=?");
     query2.setString(0, username);
     query2.setString(1, password);
     List list2 = query.list();------------没弄明白你是写错了还是??????
     if (null == list2) {
     return -2;// 密码错误
    }
    Iterator it = list.iterator();
     Users user = (Users) it.next();
     return user.getUserid();
     }
    }
      

  5.   


     List list2 = query.list();------- 是不是query2.list();?????????????????????????