gpt4 book ai didi

java - Java中的JSP登录问题

转载 作者:可可西里 更新时间:2023-11-01 08:40:41 24 4
gpt4 key购买 nike

我在连接到数据库的 JSP 中创建了一个登录 session 。

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

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

登录.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{

}

最佳答案

您的 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{

}
}

关于java - Java中的JSP登录问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33609130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com