java - jsp文件中未定义的构造方法

标签 java jsp constructor compiler-errors

当我尝试运行我的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/

相关文章:

java - JDBCPreparedStatement 忽略 $$ ... $$ 查询 block 中的 ' ? '

java - Kendo UI 网格自定义数据源 URL

java从带参数的构造函数调用不带参数的构造函数

spring - Scala 与 Spring : Constructor autowiring

java - Cookie CsrfTokenRepository.withHttpOnlyFalse() 做什么以及何时使用它?

java - 检索对象期间运行时异常

java - 嵌套 'for' 循环

jsp - 如何使用 <s :property> tag in <s:text> in struts 2

java - 将数据设置到 ActionResponse Portlet GateIn 中

java - 这个 Java 构造在 JRuby 中相当于什么?