如下:
String sql = "select uName,uPassword from login_user" ;
try {
pstmt = con.prepareStatement(sql) ;
rs = pstmt.executeQuery() ;
while(rs.next()){
uName = rs.getString("uName") ;
uPassword = rs.getString("uPassword") ;
if(userName.equals(uName)&&userPassword.equals(uPassword)){
request.getSession().setAttribute("name", userName) ;
request.getRequestDispatcher("login_success.jsp").forward(request, response) ;
}else{
这句错误 request.getRequestDispatcher("index.jsp").forward(request, response) ;
}
}
} catch (SQLException e) {}
出现在else的错误,异常为IllegalStateException我认为是else跳转打破了while循环,因为while还没判断是否还有下一个结果集,但是为什么我把else的转向给注释了,他就不出错了呢,他还是打破while循环了啊

解决方案 »

  1.   

    你打破了吗?循环结束了?呵呵,没有结束,断点调式下你就知道了,你违反了socket得一读一写原则,这个错误是逻辑错,呵呵。
      

  2.   

    if(userName.equals(uName)&&userPassword.equals(uPassword)){
    request.getSession().setAttribute("name", userName) ;
    request.getRequestDispatcher("login_success.jsp").forward(request, response) ;
    return;
    }else{
    request.getRequestDispatcher("index.jsp").forward(request, response) ;
    return;
    }
    while循环到else里面 第一次跳转了 如果第二次循环再跳转就会出这个错误
      

  3.   

    晕。。你这个代码逻辑就有问题哪有这样判断的
    while(rs.next()){
    uName = rs.getString("uName") ;
    uPassword = rs.getString("uPassword") ;
    if(userName.equals(uName)&&userPassword.equals(uPassword)){
    request.getSession().setAttribute("name", userName) ;
    request.getRequestDispatcher("login_success.jsp").forward(request, response) ;
    return;
    }
    }
    request.getRequestDispatcher("index.jsp").forward(request, response) ;
      

  4.   

    这个正解啊。转发是不会结束Java 代码继续执行的。