DoPost не выполняет методы классов

207
28 июня 2018, 09:00

Есть DoPost метод сервлета

@WebServlet(name = "login")
public class login extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        PrintWriter out = response.getWriter();
        Account acc = new Account(request.getParameter("name"),request.getParameter("password"));
        out.print("login-name: " + acc.getName() + "\nPassword: " + acc.getPassword()
                + "\nLogin-hash: " + acc.getNameHash() + "\nPass-hash: " + acc.getPassHash());
        acc.setData(acc);
    }

Выполняет все без ошибок, но не происходит добавление записи в базу данных.

public class Account {
private int id;
private String name;
private String password;
private String nameHash;
private String passHash;
private static final String url = "jdbc:postgresql://127.0.0.1:5432/siberteam";
private static final String user = "postgres";
private static final String pass = "213202";
private static Connection con;

public Account(String name, String password){
    this.id = new Random().nextInt(100000);
    this.setName(name);
    this.setPassword(password);
    try{
        this.setNameHash(md5Hash(name));
        this.setPassHash(md5Hash(password));
    } catch (Exception e) {
        System.out.println(e);
    }

}
public void setData(Account acc) {
    try {
        Class.forName("org.postgresql.Driver");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    try {
        String query = "INSERT INTO siberteam.public.account"
                + "(id,login,password,login_hash,password_hash) VALUES"
                + "(?,?,?,?,?)";
        con = DriverManager.getConnection(url, user, pass);
        PreparedStatement preparedStatement = con.prepareStatement(query);
        preparedStatement.setInt(1, acc.id);
        preparedStatement.setString(2, acc.name);
        preparedStatement.setString(3, acc.password);
        preparedStatement.setString(4, acc.nameHash);
        preparedStatement.setString(5, acc.passHash);
        preparedStatement.executeUpdate();
        logEvent(preparedStatement.toString());
    } catch (SQLException sqlEx) {
        sqlEx.printStackTrace();
    } finally {
        try { con.close(); } catch(SQLException se) { /*can't do anything */ }
    }

}

То что код работает, проверял в другой программе. БД - postgreSQL. Опыта использования как JSP, так и БД, почти нулевые, поэтому буду рад, если будет подробная критика.

Answer 1

Для того чтобы подключиться к БД в WEB приложении, нужно использовать PGSimpleDataSource. Ниже пример подключения к postgresql.

 try {
        Class.forName("org.postgresql.Driver");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
        PGSimpleDataSource source = new PGSimpleDataSource() ;
        source.setServerName("localhost");
        source.setDatabaseName("company");
        source.setUser(user);
        source.setPassword(pass);
READ ALSO
Вопрос по парсингу погоды в java

Вопрос по парсингу погоды в java

Объясните, пожалуйста, почему вот этот код работает: выводит в консоль table и tr

157
Как правильно послать запрос и получить данные?

Как правильно послать запрос и получить данные?

Имеются два класса, полностью одинаковые, но с одним отличием, первый класс не выдает результат, то есть ни ошибки ни результата нетВ логе...

230
Как распарсить JSON и вывести данные в RecycleView?

Как распарсить JSON и вывести данные в RecycleView?

как правильно парсить такой jsonнадо получить следующие данные и выводить в recycleview

251
Dependencies в Maven [дубликат]

Dependencies в Maven [дубликат]

На данный вопрос уже ответили:

181