简体   繁体   English

Java中的JSP登录问题

[英]JSP Login issue in Java

I have created a login session in JSP which is connected to a database. 我在JSP中创建了一个连接到数据库的登录会话。

I have 3 rows of in my admin table. 我的管理表中有3行。 The problem is that when I enter the correct credentials as they are in the table, it does nothing when I login. 问题是,当我输入表中的正确凭据时,我登录时什么都不做。 Its only when I enter the last row (username and password) of the admin table, that it logs me in successfully. 它只有当我输入管理表的最后一行(用户名和密码)时才能成功登录。 But when I enter the previous usernames and passwords which are in the table, it does not log me in. Why is that so? 但是,当我输入表中的先前用户名和密码时,它不会登录。为什么会这样? My codes are below: 我的代码如下:

LoginManager.java LoginManager.java

public class LoginManager {

String url = "jdbc:mysql://localhost:3306/cms";
String user = "root";
String pass = "root";


    ArrayList<Login> lgs = new ArrayList<Login>();
    public ArrayList<Login> log(String userType, String username, String password) throws ClassNotFoundException, SQLException{
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection(url, user, pass);
        Statement stt = con.createStatement();
        if(userType.equals("Administrator")){
            String admin = "SELECT * FROM admin";
            ResultSet rs = stt.executeQuery(admin);
            while(rs.next()){
                String logid = rs.getString("LoginName");
                String pw = rs.getString("Password");
                String fname = rs.getString("FirstName");
                String lname = rs.getString("LastName");
            Login lg = new Login();
            lg.setUsername(logid);
            lg.setPassword(pw);
            lg.setFname(fname);
            lg.setLname(lname);
            lg.setUserType("Administrator");
            lgs.add(lg);
            }
            con.close();
            rs.close();
            stt.close();
        }

        return lgs;
    }

Login.java Login.java

  package cms;

  import javax.persistence.*;

    @Entity
    public class Login {
private String userType;
private String username;
private String password;
private String fname;
private String lname;

@Id
public String getUserType() {
    return userType;
}
public void setUserType(String userType) {
    this.userType = userType;
}
public String getUsername() {
    return username;
}
public void setUsername(String username) {
    this.username = username;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}

public void setFname(String fname){
    this.fname = fname;
}

public String getFname(){
    return fname;
}

public void setLname(String lname){
    this.lname = lname;
}

public String getLname(){
    return lname;
  }
   }

Part of the JSP Code JSP代码的一部分

    <%@page import = "java.util.*, cms.*" %>
<jsp:useBean id = "lm" class = "cms.LoginManager" scope = "session"/>

      <%
    Boolean submitted = Boolean.parseBoolean(request.getParameter("isSubmitted"));
  int success = 0;
      if(submitted){
  String type = request.getParameter("type");
  String user = request.getParameter("userInput");
  String password = request.getParameter("pw");
 ArrayList<Login> lgs = lm.log(type, user, password);

 Login lg = new Login();
for(int i=0; i <lgs.size(); i++)
 lg= lgs.get(i);


 if((user.equals(lg.getUsername()) && password.equals(lg.getPassword()) && type.equals("Administrator"))){
    session.setAttribute("name", lg.getFname() + " " + lg.getLname());
    session.setAttribute("type", lg.getUserType());
     response.sendRedirect("index.jsp");
 }else{

 }

you are having logical bug in your jsp code. 你的jsp代码中存在逻辑错误。 first you are iterating through all users and then you are validating the user. 首先,您要遍历所有用户,然后验证用户。 make it something like this and it will work 使它像这样,它会工作

   Login lg = new Login();
    for(int i=0; i <lgs.size(); i++){
     lg= lgs.get(i);
    if((user.equals(lg.getUsername()) && password.equals(lg.getPassword()) && type.equals("Administrator"))){
    session.setAttribute("name", lg.getFname() + " " + lg.getLname());
    session.setAttribute("type", lg.getUserType());
     response.sendRedirect("index.jsp");
 }else{

 }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM