2016-11-21 138 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(); 
相关问题