tul6skiu
@tul6skiu
Fibbonacci

Как передать нажатие кнопки «удалить» с файла.jsp на сервлет для удаления данных с бд по id?

есть класс UserDaoJdbcImpl который реализует интерфейс UsersDao c 5 методами: find, findAll ,delete, update.
public class UserDaoJdbcImpl implements UsersDao{
 private final String SQL_DELETE =
            "DELETE FROM data_user WHERE id = ?";

public void delet(Integer id) {
        try {
            PreparedStatement statement = connection.prepareStatement(SQL_DELETE);
            statement.setLong(1, Long.valueOf("id"));
            statement.executeUpdate();
        }catch (SQLException e)
        {
            throw new IllegalStateException(e);
        }
    }

}

Есть users.jsp файл где есть следующая форма
<c:forEach items="${usersFromServer}" var = "user">
                <tr>
                    <td class=w3-round-small>${user.firstName}</td>
                    <td>${user.lastName}</td>
                    <td>Пока нету даты</td>
                    <td><form action = "" method="post">
                        <input type="hidden" name="id" value="${user.firstName}">
                        <input type="hidden" name="name" value="${user.lastName}">
                        <input type="submit" value="Изменить" >
                    </form>
                        <form method="post" action="/users">
                            <button type="submit" name="delete" value="${user.id}">delete</button>
                    </form></td>
                </tr>
            </c:forEach>

и есть сервлет ListServlet
public class ListServlet extends HttpServlet {
    private UsersDao usersDao;


    @Override
    public void init() throws ServletException{
        Properties properties = new Properties();

        DriverManagerDataSource dataSource = new DriverManagerDataSource();

        try{
            properties.load(new FileInputStream(getServletContext().getRealPath("/WEB-INF/classes/test-dao/db.properties")));
            String dbUrl = properties.getProperty("db.url");
            String dbUsername = properties.getProperty("db.username");
            String dbpassword = properties.getProperty("db.password");
            String driverClassName = properties.getProperty("db.driverClassName");


            dataSource.setUrl(dbUrl);
            dataSource.setUsername(dbUsername);
            dataSource.setPassword(dbpassword);
            dataSource.setDriverClassName(driverClassName);

            usersDao = new UserDaoJdbcImpl(dataSource);
        }
        catch (IOException e){
            throw new IllegalStateException(e);
        }
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        List<User> users = usersDao.findAll();
        req.setAttribute("usersFromServer",users);

        RequestDispatcher requestDispatcher = req.getRequestDispatcher("views/users.jsp");
        requestDispatcher.forward(req, resp);
    }

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

        String delete = request.getParameter("delete");

        if (delete != null) {
            usersDao.delet(Integer.valueOf(request.getParameter(delete)));
        }
        response.sendRedirect(request.getContextPath() + "/users");
    }
}

Помогите как реализовать удаление значение в базе данных по id при нажатии на кнопку удалить как я понимаю я должен ловить пост запрос в своем сервлете в методе doPost но как мне вызвать метод удаления из другого класса в своем сервлете. Я новичок в данном деле по этому буду рад любой помощи
  • Вопрос задан
  • 855 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы