【问题标题】:Constructor undefined in jsp filejsp文件中未定义构造函数
【发布时间】:2018-04-15 10:44:51
【问题描述】:

当我尝试运行我的 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);
    }
}

这是我们的用户类:

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


}

感谢您查看我的代码。

【问题讨论】:

  • 我已经添加了答案,请查看

标签: java jsp constructor compiler-errors


【解决方案1】:

因为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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多