2017-10-11 48 views
-2

我正在嘗試編寫將數據插入數據庫(mysql)的servlet。問題是我需要將它寫入其他從servlet調用的類中,並在沒有getParameter()的情況下插入數據; UPD:這裏是一個完整的代碼,我想壓縮成2班,1對servlet中,1類,它包含的參數Java Servlet插入到數據庫沒有getParameter();

  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(); 
    } 
        } 
    
    
    } 
    
+2

將值傳遞給其他類作爲參數。 – BackSlash

+0

向我們展示了所有涉及的代碼。 –

+0

@ BackSlash ok,我會盡力去做* – Nurik

回答

1

從您的代碼我可以看到所有來自請求的參數現在設置爲使用r對象。

- >編寫一個接受User對象的DAO圖層類。然後編寫查詢以用用戶對象插入數據。

+0

我不知道我明白你說了什麼。讓我告訴你完整的代碼* – Nurik

+0

我已編輯我的代碼 – Nurik

+0

該代碼看起來可行。你現在將數據插入數據庫的錯誤是什麼? – Arun

0

我不確定你在問什麼,所以我做了兩種不同的方式...... 希望這會給你一個足夠好的例子來做任何你想做的事情。

----使用用戶對象----

的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(); 
} 
    } 


} 

----無需用戶OBJECT ----

的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(); 
} 
} 


} 
+0

我明白這一點。但它不是我想要的。我將嘗試重新說明我想要做的事情: – Nurik

+0

1.根本不使用getParamater();例如,如果我不知道我想要在數據庫中插入什麼類型的數據(字符串,整數,日期等)2.調用已經具有從servlet插入值的類 – Nurik

+0

如果您通過http提交表單中的數據.. 。你必須使用getParameter()。默認情況下,這些值是字符串值,但您可以將它們轉換爲任何您需要的值。 –