2016-11-21 6 views
0

私はユーザ名、パスワード、ログインボタンを持つログインフォームを持っています。ログインしたユーザに基づいてJSPページを別のJSPページにリダイレクトします

私は、ユーザー名とパスワードを含む1つのログインテーブルを持つMySQL DBを持っています。ログインサーブレットを使用した

、私は次のことを達成しようとしている:ログイン テーブルに格納されているもののユーザー名とパスワードが一致した場合

  • チェックを。
  • 一致する場合は、このユーザーを確認し、JSPページにリダイレクトします。

ただし、以下の私のコードは動作しません:

ログインテーブルを:サーブレットのtry-catchをコードlgoin

​​

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+"'"; 

forループであなたのロジックは以下のようにすべてのユーザーのために働くことから、whileループを削除し、そしてif文のようにコードを更新します。

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(); 
関連する問題