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 楼答案
您的jsp代码中存在逻辑错误。首先遍历所有用户,然后验证用户。把它做成这样,它就会起作用