2016-11-21 163 views
0

我有一個用戶名,密碼和登錄按鈕的登錄表單。根據登錄用戶將JSP頁面重定向到另一個JSP頁面

我有MySQL DB有一個登錄表,包含用戶名和密碼。

使用登錄Servlet中,我試圖實現以下目標:

  • 檢查用戶名和密碼匹配什麼是存儲在登錄 表。
  • 如果匹配,檢查此用戶是誰,並將其重定向到他的JSP頁面。

但是,我下面的代碼不起作用:

登錄表:

​​

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); 
     } 

但它不是工作和開關箱打印所有情況並打開所有jsp頁面。

謝謝你的幫助。

回答

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(); 
相關問題