根据登录的用户

时间:2016-11-21 00:32:12

标签: java mysql jsp servlets

我有一个带有用户名,密码和登录按钮的登录表单。

我有MySQL DB,它有一个登录表,包含用户名和密码。

使用登录Servlet,我试图实现以下目标:

  • 检查用户名和密码是否与登录中存储的内容相匹配 表
  • 如果匹配,请检查该用户是谁并将其重定向到他的JSP页面。

但是,我的代码不起作用:

登录表:

enter image description here

lgoin Servlet try-catch代码:

 String userName_Login = request.getParameter("Username");
    String passWord_Login = request.getParameter("Password");
    String DB_URL = "jdbc:mysql://localhost:3306/evaluationDB";
    String DB_UNAME = "root";
    String DB_PASS = "******";
try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = (Connection) DriverManager.getConnection(DB_URL, DB_UNAME, DB_PASS);
            Statement stmt = conn.createStatement();
            //String loginSQL = "SELECT userName, passWord FROM login";
            String loginSQL = "SELECT * from login";
            ResultSet rs = stmt.executeQuery(loginSQL);

             while(rs.next()){
                 ArrayList<String> userNameArray = new ArrayList<String>();
                 ArrayList<String> passWordArray = new ArrayList<String>();

                 userNameArray.add(rs.getString("userName"));
                 passWordArray.add(rs.getString("passWord"));

                 if (rs.getString("userName").equals(userName_Login) && rs.getString("passWord").equals(passWord_Login)){
                     for (int index = 0 ; index < userNameArray.size() ;  index++){
                      switch (userNameArray.get(index)){
                        case "SystemManager":
                            response.sendRedirect("SystemManager.jsp");
                            System.out.println("Welcome SystemManager ");
                            break;
                         case "Secretary":
                            response.sendRedirect("Secretary.jsp");
                            System.out.println("Welcome Secretary ");
                            break;

                          case "TeamLeader":
                            response.sendRedirect("TeamLeader.jsp");
                            System.out.println("Welcome TeamLeader ");
                            break;

                          case "WorkOrganizerLeader":
                             response.sendRedirect("WorkOrganizerLeader.jsp");
                            System.out.println("Welcome WorkOrganizerLeader ");
                            break;

                          case "ProjectManager":
                            response.sendRedirect("ProjectManager.jsp");
                            System.out.println("Welcome ProjectManager ");
                            break;

                          default :
                              System.out.println("I don't know you ...  ");

                    } 
                 }

                }
                else{
                  System.out.println("Get Out ...  : ");
                   break;
                 }

             }
            rs.close();
         stmt.close();
         conn.close();  
        } 


        catch (ClassNotFoundException ex) {
            Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
        }

但它不起作用,并且switch case打印所有情况并打开所有jsp页面。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

将您的loginSQL查询更改为以下内容,以获取包含用户输入的用户名和密码的记录。

String loginSQL = "SELECT * from login where userNameArray   
='"+userName_Login+"' and passWord ='"+passWord_Login+"'";

更新代码以删除while循环和if语句,因为for循环中的逻辑适用于所有用户,如下所示:

    ResultSet rs = stmt.executeQuery(loginSQL);
    if(rs.next()){
    //If record exists as per updated query
    String mycase=rs.getString("userName");
         switch (mycase){//fetch Username
           case "SystemManager":
               response.sendRedirect("SystemManager.jsp");
               System.out.println("Welcome SystemManager ");
               break;
            case "Secretary":
               response.sendRedirect("Secretary.jsp");
               System.out.println("Welcome Secretary ");
               break;

             case "TeamLeader":
               response.sendRedirect("TeamLeader.jsp");
               System.out.println("Welcome TeamLeader ");
               break;

             case "WorkOrganizerLeader":
                response.sendRedirect("WorkOrganizerLeader.jsp");
               System.out.println("Welcome WorkOrganizerLeader ");
               break;

             case "ProjectManager":
               response.sendRedirect("ProjectManager.jsp");
               System.out.println("Welcome ProjectManager ");
               break;

             default :
                 System.out.println("I don't know you ...  ");

       } 
   }
   else{
     System.out.println("Get Out ...  : ");
    }
     rs.close();
     stmt.close();
     conn.close();