*******做用户登录的Servlet文件中的一段:
当UserId 和Pwd匹配的时候可以跳转到../MyOO.jsp,但是不匹配的时候,else语句不执行~!!
List<UserTab> list = dsi.getUserInfo(UserId,Pwd);
if (list != null && list.size() != 0) {
for (int i = 0; i < list.size(); i++) {
UserTab usertab = list.get(i);
if (usertab.getUserId().equals(UserId)&& usertab.getPwd().equals(Pwd)){
usertab = new UserTab(UserId,Pwd);
System.out.println("  qqqq    ");
response.sendRedirect("../MyOO.jsp");

}else{
System.out.println("  qqqqgfgf    ");
response.sendRedirect("../Customer/test2.jsp");

break;
}

}
System.out.println(" ******************************    ");
}
 else {
 response.sendRedirect("../login.jsp");
}

解决方案 »

  1.   

    if判断语句写在for循环里面有问题,应该定义一个全局flag,去记录判断结果(true/false),最后在for外部去实现跳转。
      

  2.   

    代码有风险
    usertab.getUserId().equals(UserId)&& usertab.getPwd().equals(Pwd))
    没有判断usertab和usertab.getUserId()是否为null,如果是null的话会报异常
    另外你怎么会有那么多的user要去循环判断呢?参考1楼
      

  3.   

    List<UserTab> list = dsi.getUserInfo(UserId,Pwd);
    boolean flag;
    if (list != null && list.size() != 0) {
    for (int i = 0; i < list.size(); i++) {
    UserTab usertab = list.get(i);
    if (usertab.getUserId().equals(UserId)&& usertab.getPwd().equals(Pwd)){
    usertab = new UserTab(UserId,Pwd);
    System.out.println("  qqqq    ");
    flag=true;
    //response.sendRedirect("../MyOO.jsp");}else{
    System.out.println("  qqqqgfgf    ");
    flag=false;
    //response.sendRedirect("../Customer/test2.jsp");
    break;
    }}
    if(flag=true)
    {
    response.sendRedirect("../MyOO.jsp");
    }
    if(flag=false)
    {
    response.sendRedirect("../Customer/test2.jsp");
    }
    System.out.println(" ******************************    ");
    }
     else {
     response.sendRedirect("../login.jsp");
    }

    在for循环外面跳转还是不行,else那段始终不执行!
      

  4.   

    如果是null的话,为什么匹配的时候会成功跳转,而且没有报异常
      

  5.   

    List<UserTab> list = dsi.getUserInfo(UserId,Pwd);
    boolean flag = false;//默认不存在
    if (list != null && list.size() != 0) {
    for (int i = 0; i < list.size(); i++) {
    UserTab usertab = list.get(i);
    if (usertab.getUserId().equals(UserId)&& usertab.getPwd().equals(Pwd)){
    usertab = new UserTab(UserId,Pwd);
    flag=true;
    break;
    }}
    if(flag){
    response.sendRedirect("../MyOO.jsp");
    }else
        response.sendRedirect("../Customer/test2.jsp");
    }
      

  6.   

    依然不行= =else语句跳不进去、、
      

  7.   

    依然不行= =else语句跳不进去、、不对,你的list最多就一个元素是吧,那不用循环啊,这么写:boolean flag = false;//默认不存在
    List<UserTab> list = dsi.getUserInfo(UserId,Pwd);
    if(list.size() > 0){//表明该用户存在
        flag = true;
    }
    if(flag){
        response.sendRedirect("../MyOO.jsp");
    }else
        response.sendRedirect("../Customer/test2.jsp");
    }
      

  8.   

    如果真的是到了if段,没理由不去执行else段的
      

  9.   

    你看你的代码,首先你判断用户名密码是否正确,因为你填的是不正确的所以查询出的list就为空了对吧?
    第一个if就过不去,所以直接跳到最后一个else而重新回到登陆页面,你那红色的代码永远也执行不了?。
    不知道你懂了没?
      

  10.   

    依然不行= =else语句跳不进去、、不对,你的list最多就一个元素是吧,那不用循环啊,这么写:boolean flag = false;//默认不存在
    List<UserTab> list = dsi.getUserInfo(UserId,Pwd);
    if(list.size() > 0){//表明该用户存在
        flag = true;
    }
    if(flag){
        response.sendRedirect("../MyOO.jsp");
    }else
        response.sendRedirect("../Customer/test2.jsp");
    }昨天有点蒙,已经调试好了,谢谢