当我尝试运行我的jsp文件时,出现构造函数未定义错误。谁能帮我找出原因。我有一个SQL数据库,用于存储用户名,密码等。我想从jsp站点获取som信息,并将其插入数据库表中。我有一个基本的html表,输入来自哪里,我没有在代码中包括它,因为我认为这不是无关紧要的,但是如果需要,请这样说。
这是代码:
<%@page import="dk.au.hum.imv.persistence.db.JDBCConnectionFactory, java.util.*, user.User, dao.UserDAO"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Hvem vil være millionær? - Quizzen</title>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
String passwordRepeat = "";
String first_name = request.getParameter("first_name");
String last_name = request.getParameter("last_name");
String email = request.getParameter("email");
String createButton = request.getParameter ("create");
if (createButton != null) {
JDBCConnectionFactory.initManualConnectionHandling("jdbc:mysql://student.hum.au.dk/fred "Connection info deleted due to privacy" "com.mysql.jdbc.Driver");
User user = new User (username, password, first_name, last_name, email);
UserDAO.saveUser(user);
}
%>
这是DAO类中的saveUser:
public static void saveUser(User user) {
Connection con = null;
try {
con = JDBCConnectionFactory.getNewConnection();
String sql = "INSERT INTO user (username, password, first_name, last_name, email) VALUES (?, ?, ?, ?, ?)";
int keyGeneration = Statement.RETURN_GENERATED_KEYS;
PreparedStatement prep = con.prepareStatement(sql, keyGeneration);
prep.setString(1, user.getUsername());
prep.setString(2, user.getPassword());
prep.setString(3, user.getFirst_name());
prep.setString(4, user.getLast_name());
prep.setString(5, user.getEmail());
prep.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCConnectionFactory.closeConnection(con);
}
}
这是我们的User类:
package user;
public class User {
private int id_user;
private String username;
private String password;
private String first_name;
private String last_name;
private String email;
@Override
public String toString() {
return "User [id_user=" + id_user + ", username=" + username + ", password=" + password + ", first_name="
+ first_name + ", last_name=" + last_name + ", email=" + email + "]";
}
public User (int id_user, String username, String password, String first_name, String last_name, String email) { //Vi definerer parametrene
this.id_user = id_user;
this.username = username;
this.password = password; //Med nøgleordet "this"
this.first_name = first_name;
this.last_name = last_name;
this.email = email;
}
//Setters & Getters:
public int getUserById() {
return id_user;
}
public void setUserById(int id_user) {
this.id_user = id_user;
}
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 String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name = last_name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
感谢您查看我的代码。
最佳答案
因为User
中的构造函数具有6个参数:
public User (int id_user, String username, String password, String first_name, String last_name, String email) { //Vi definerer parametrene
this.id_user = id_user;
this.username = username;
this.password = password; //Med nøgleordet "this"
this.first_name = first_name;
this.last_name = last_name;
this.email = email;
}
但是,当您初始化用户时,您仅传递5个参数:
User user = new User (username, password, first_name, last_name, email);
UserDAO.saveUser(user);
为了解决这个问题,您可以在
User
中添加两个构造函数,如下所示:public User (String username, String password, String first_name, String last_name, String email) {
this.username = username;
this.password = password; //Med nøgleordet "this"
this.first_name = first_name;
this.last_name = last_name;
this.email = email;
}
public User (int id_user, String username, String password, String first_name, String last_name, String email) { //Vi definerer parametrene
this.id_user = id_user;
this(username,password,first_name,last_name,email);
}
关于java - jsp文件中未定义的构造方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49841033/