【问题标题】:Java Servlet insert to database without getParameter(); [duplicate]Java Servlet 在没有 getParameter() 的情况下插入数据库; [复制]
【发布时间】:2017-10-11 13:48:00
【问题描述】:

我正在尝试编写将数据插入数据库(mysql)的 servlet。问题是我需要将它写在从 servlet 调用的其他类中,并在没有 getParameter() 的情况下插入数据; UPD:这是一个完整的代码,我想压缩成 2 个类,1 个用于 servlet,1 个用于包含参数的类

  1. UserController.java

     protected void doPost(UserDao request, HttpServletResponse 
        response) throws ServletException, IOException {
    
    
    
        UserDao.addUser();
    
    }
    
  2. UserDAO.java

     public class UserDao {
    
      private static Connection connection;
    
      public UserDao() {
      connection = (Connection) DBconnect.getConnection();
         }
    
     public static void addUser(String fname, String lname, String dob,      String email, String uid) {
         try {
     PreparedStatement preparedStatement = ((java.sql.Connection)      connection).prepareStatement("insert into users(firstname,lastname,dob,email) values (?, ?, ?, ? );");
      preparedStatement.setString(1, fname);
     preparedStatement.setString(2, lname);
     preparedStatement.setString(3, dob);
     preparedStatement.setString(4, email);
     preparedStatement.executeUpdate();
    
     } catch (SQLException e) {
     e.printStackTrace();
     }
      }
    
    
    }
    

【问题讨论】:

  • 将这些值作为参数传递给其他类。
  • 向我们展示所有涉及的代码。
  • @BackSlash 好的,我会努力做到的*
  • @JonathanLaliberte 完成!
  • @Nurik 查看我的答案,如果有帮助,请告诉我。不确定你到底想做什么,所以有两种不同的方式。

标签: java mysql servlets


【解决方案1】:

从您的代码中,我可以看到请求中的所有参数现在都设置在用户对象中。

-> 编写一个接受用户对象的 DAO 层类。然后编写查询以使用用户对象插入数据。

【讨论】:

  • 我不确定我是否理解您所说的。让我给你看完整的代码*
  • 我已经编辑了我的代码
  • 代码看起来工作正常。您现在将数据插入数据库时​​遇到什么错误?
【解决方案2】:

我不确定你到底在问什么,所以我做了两种不同的方法...... 希望这会给你一个足够好的例子来做你想做的任何事情。

----有用户对象----

servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {

String fname = request.getParameter("firstName");
String lname = request.getParameter("lastName");
String dob = request.getParameter("dob");
String email = request.getParameter("email");
String uid = request.getParameter("userid");

dao.newUser(fname,lname,dob,email,uid);

}

userDao

 public class UserDao {

 private Connection connection;

 public UserDao() {
 connection = DbConnect.getConnection();
    }

public void newUser(String fname, String lname, String dob, String email, String uid){

    User user = new User();
    user.setFirstName(fname);
    user.setLastName(lname);
    user.setDob(dob);
    user.setEmail(email);

    addUser(user);}

}

    public void addUser(User user) {
        try {
    PreparedStatement preparedStatement = connection
            .prepareStatement("insert into     
  users(firstname,lastname,dob,email) values (?, ?, ?, ? )");

    preparedStatement.setString(1, user.getFirstName());
    preparedStatement.setString(2, user.getLastName());
    preparedStatement.setString(3, user.getDob());
    preparedStatement.setString(4, user.getEmail());
    preparedStatement.executeUpdate();

} catch (SQLException e) {
    e.printStackTrace();
}
     }


}

----没有用户对象----

servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {

String fname = request.getParameter("firstName");
String lname = request.getParameter("lastName");
String dob = request.getParameter("dob");
String email = request.getParameter("email");
String uid = request.getParameter("userid");

dao.addUser(fname,lname,dob,email,uid);

}

userDao

public class UserDao {

 private Connection connection;

 public UserDao() {
 connection = DbConnect.getConnection();
    }

public void addUser(String fname, String lname, String dob, String email, String uid) {
    try {
PreparedStatement preparedStatement = connection
        .prepareStatement("insert into users(firstname,lastname,dob,email) values (?, ?, ?, ? );");

preparedStatement.setString(1, fname);
preparedStatement.setString(2, lname);
preparedStatement.setString(3, dob);
preparedStatement.setString(4, email);
preparedStatement.executeUpdate();

} catch (SQLException e) {
e.printStackTrace();
}
 }


}

【讨论】:

  • 我很感激。但这不是我想要的。我会尝试改写我想做的事情:
  • 1.根本不使用 getParamater();例如,如果我不知道我想在数据库中插入什么类型的数据(字符串、整数、日期等) 2. 调用已经从 servlet 插入值的类
  • 如果你通过http从表单提交数据...你必须使用getParameter()。默认情况下,这些值是字符串值,但您可以将它们转换为您需要的任何值。
  • 公共 Servletik() { super(); } protected void doPost(UserDao request, HttpServletResponse response) throws ServletException, IOException { UserDao.addUser(); } }
猜你喜欢
  • 2011-06-19
  • 2015-01-19
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
  • 2014-07-17
  • 2022-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多