有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的mysql JSP登录问题

我已经在JSP中创建了一个登录会话,它连接到一个数据库

我的管理表中有3行。问题是,当我在表中输入正确的凭据时,当我登录时,它不会执行任何操作。只有当我输入admin表的最后一行(用户名和密码)时,它才会让我成功登录。但当我输入表中以前的用户名和密码时,它不会让我登录。为什么会这样? 我的代码如下:

登录管理器。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;
    }

登录。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;
  }
   }

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{

 }

共 (1) 个答案

  1. # 1 楼答案

    您的jsp代码中存在逻辑错误。首先遍历所有用户,然后验证用户。把它做成这样,它就会起作用

       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{
    
     }
    }