#java #jsp #servlets
#java #jsp #сервлеты
Вопрос:
У меня есть JSP и сервлет, которые позволяют пользователю добавлять данные в базу данных, а затем перечислять данные. Я хотел бы добавить рядом с каждой строкой кнопку «Удалить», которая удаляла бы ее из базы данных.
У меня уже есть DAO для обработки части удаления, но я довольно новичок в JSP, поэтому я не знаю, как создать кнопку, которая использовала бы этот DAO. Должен ли я создать второй сервлет? Или я могу использовать тот, который у меня уже есть, для обработки функции удаления? Вот мой код :
JSP :
<%@ page pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Utilisateurs</title>
</head>
<body>
<form method="post" action=ServletUtilisateurs>
<p>
<label for="identifiant">Identifiant : </label>
<input type="text" name="identifiant" id="identifiant" />
</p>
<p>
<label for="password">Mot de passe : </label>
<input type="text" name="password" id="password" />
</p>
<p>
<label for="mail">Mail : </label>
<input type="text" name="mail" id="mail" />
</p>
<p>
<label for="nom">Nom : </label>
<input type="text" name="nom" id="nom" />
</p>
<p>
<label for="prenom">Prenom : </label>
<input type="text" name="prenom" id="prenom" />
</p>
<input type="submit" value="Envoyer" />
</form>
<ul>
<c:forEach var="utilisateur" items="${ utilisateurs }">
<li>
<c:out value="${ utilisateur.identifiant }" />
<c:out value="${ utilisateur.password }" />
<c:out value="${ utilisateur.mail }" />
<c:out value="${ utilisateur.prenom }" />
<c:out value="${ utilisateur.nom }" />
<input type="submit" value="Supprimer" />
</li>
</c:forEach>
</ul>
</body>
</html>
Сервлет :
package org.escalade.servlets;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.escalade.beans.Utilisateur;
import org.escalade.dao.DaoFactory;
import org.escalade.dao.UtilisateurDao;
/**
* Servlet implementation class ServletUtilisateurs
*/
@WebServlet("/ServletUtilisateurs")
public class ServletUtilisateurs extends HttpServlet {
private static final long serialVersionUID = 1L;
private UtilisateurDao utilisateurDao;
@Override
public void init() throws ServletException {
final DaoFactory daoFactory = DaoFactory.getInstance();
this.utilisateurDao = daoFactory.getUtilisateurDao();
}
/**
* @see HttpServlet#HttpServlet()
*/
public ServletUtilisateurs() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
final Utilisateur utilisateurs = new Utilisateur();
request.setAttribute("utilisateurs", this.utilisateurDao.list());
this.getServletContext().getRequestDispatcher("/WEB-INF/Utilisateurs.jsp").forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
final Utilisateur utilisateur = new Utilisateur();
utilisateur.setIdentifiant(request.getParameter("identifiant"));
utilisateur.setPassword(request.getParameter("password"));
utilisateur.setMail(request.getParameter("mail"));
utilisateur.setNom(request.getParameter("nom"));
utilisateur.setPrenom(request.getParameter("prenom"));
final Utilisateur utilisateurs = new Utilisateur();
this.utilisateurDao.createUtilisateur(utilisateur);
request.setAttribute("utilisateurs", this.utilisateurDao.list());
this.getServletContext().getRequestDispatcher("/WEB-INF/Utilisateurs.jsp").forward(request, response);
}
}
Заранее спасибо
Комментарии:
1. Что ж, ваш JSP будет использоваться для рендеринга некоторого HTML, который будет доставлен в браузер пользователя. Это означает, что команду для удаления чего-либо (нажатие кнопки) нужно будет отправить из браузера обратно на сервер, т. е. вам нужно отправить http-запрос. Этот запрос должен был бы быть обработан некоторым сервлетом, и этот сервлет должен был бы знать, что он должен делать. Самый простой способ сделать это — повторно использовать ваш сервлет и включить некоторые параметры, которые говорят «удалить x», например, что-то вроде
command=delete
иid=id_of_the_line
.2. Вы можете следовать javatpoint.com/crud-in-jsp . Основная идея заключается в том, чтобы иметь ссылку с параметрами идентификатора id=${u.getId()}amp;amp;action=удалить. На основе этих параметров обработайте в servet. Этот пример может вам помочь.