Système de gestion de clone / tâches Java / Twitter ⑥ Ajouter une fonction de suppression

introduction

J'aimerais écrire un article pour ceux qui écrivent des applications pour la première fois avec Java. Nous vous serions reconnaissants de bien vouloir l'utiliser comme référence pour créer des thèmes de formation pour votre portefeuille et votre entreprise. Cette fois, nous allons créer un gestionnaire de tâches. En appliquant cela, il peut également être utilisé pour créer des clones Twitter.

Je publierai des articles pour chaque fonction de l'application.

  1. Créer une base de données
  2. Fonction de connexion
  3. Fonction d'enregistrement des tâches
  4. Affichage de la liste -Fonction de tri -Fonction de recherche
  5. Fonction d'édition
  6. Fonction de suppression
  7. Contrôle exclusif

Environnement d'exécution

eclipse4.16.0 Tomcat9 Java11 Mysql5.7

table des matières

  1. Créer une vue
  2. Créez DAO
  3. Créer un servlet
  4. Prochain avis

Créer une vue

Demandez la confirmation des détails de la tâche ici avant de supprimer une tâche

task-delete.java


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Supprimer la tâche</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
</head>
<body>
<jsp:useBean id="task" scope="request" class="model.entity.TaskBean"/>
<%
String category_name = (String)request.getAttribute("category_name");
String status_name = (String)request.getAttribute("status_name");
String user_name = (String)request.getAttribute("user_name");
int version = (int)request.getAttribute("version");
%>
	<jsp:include page="header.jsp"/>
	<div class="contain mt-4 mr-5 ml-5">
		<div class="row justify-content-center">
			<h3>Supprimer la tâche</h3>
		</div>
		<table class="table">
		  <thead>
		    <tr>
		      <th scope="col"></th>
		      <th scope="col">Voulez-vous supprimer cette tâche?</th>
		    </tr>
		  </thead>
		  <tbody>
		  <tr>
		      <th scope="row">ID de tâche</th>
		      <td><jsp:getProperty property="task_id" name="task"/></td>
		    </tr>
		    <tr>
		      <th scope="row">Nom de la tâche</th>
		      <td><jsp:getProperty property="task_name" name="task"/></td>
		    </tr>
		    <tr>
		      <th scope="row">Catégorie</th>
		      <td><jsp:getProperty property="category_id" name="task"/>:<%=category_name %></td>
		    </tr>
		    <tr>
		      <th scope="row">Date limite</th>
		      <td><jsp:getProperty property="limit_date" name="task"/></td>
		    </tr>
		    <tr>
		      <th scope="row">Nom d'utilisateur</th>
		      <td><%=user_name %></td>
		    </tr>
		    <tr>
		      <th scope="row">statut</th>
		      <td><jsp:getProperty property="status_code" name="task"/>:<%=status_name %></td>
		    </tr>
		    <tr>
		      <th scope="row">Note</th>
		      <td><jsp:getProperty property="memo" name="task"/></td>
		    </tr>
		    <tr>
		      <th scope="row">Date d'enregistrement</th>
		      <td><jsp:getProperty property="create_datetime" name="task"/></td>
		    </tr>
		    <tr>
		      <th scope="row">Mettre à jour la date et l'heure</th>
		      <td><jsp:getProperty property="update_datetime" name="task"/></td>
		    </tr>
		  </tbody>
		</table>
		<form action="task-delete-servlet" method="post">
			<input type="hidden" name="task_id" value="<jsp:getProperty property="task_id" name="task"/>">
			<input type="hidden" name="version" value="<%=version %>">
			<button type="submit" class="btn btn-outline-danger">Effacer</button>
		</form>
	</div>

<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
</body>
</html>

Si la tâche peut être supprimée avec succès, faites-la confirmer sur cet écran.

task-delete-comp.java


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Suppression terminée</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/task-edit-failure.css">
<body>
	<jsp:include page="header.jsp"/>
	<div class="contain">
		<div class="box">
			 <h3>La tâche a été supprimée</h3>
		</div>
	</div>
</body>
</html>

Afficher cet écran si la suppression de la tâche échoue (Si vous ne pouvez pas le supprimer pour une raison quelconque, telle qu'un contrôle exclusif à effectuer la prochaine fois, nous vous en informerons ici)

task-delete-failure.java


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Échec de la suppression de la tâche</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/task-edit-failure.css">
</head>
<body>
<jsp:include page="header.jsp"/>
	<div class="contain">
		<div class="box">
		  <h3>Échec de la suppression de la tâche</h3>
		</div>
	</div>
</body>
</html>

Créer un DAO

Ici, vous verrez également les méthodes qui apparaissent dans l'article d'édition de tâches précédemment créé. Veuillez ne voir que ceux qui en ont besoin

model.dao.TaskDAO.java


/**
	 * task_Obtenir une tâche spécifique avec id comme argument
	 * @param task_id
	 * @return
	 * @throws SQLException
	 * @throws ClassNotFoundException
	 */
	public TaskBean getSpecificTask(int task_id) throws SQLException, ClassNotFoundException {
		 TaskBean task = new TaskBean();
		 String sql = "select * from t_task where task_id = ?";
		 try(Connection con = ConnectionManager.getConnection();
				 PreparedStatement pstmt = con.prepareStatement(sql);){
			 pstmt.setInt(1, task_id);
			 ResultSet res = pstmt.executeQuery();
			 //Stocker les informations de colonne dans l'objet de tâche
			 while(res.next()) {
				task.setTask_id(task_id);
				task.setTask_name(res.getString("task_name"));
				task.setCategory_id(res.getInt("category_id"));
				task.setLimit_date(res.getDate("limit_date"));
				task.setUser_id(res.getString("user_id"));
				task.setStatus_code(res.getString("status_code"));
				task.setMemo(res.getString("memo"));
				task.setCreate_datetime(res.getTimestamp("create_datetime"));
				task.setUpdate_datetime(res.getTimestamp("update_datetime"));
				task.setVersion(res.getInt("version"));
			 }
		 }
		 return task;
	 }

/**
	  *Méthode de suppression des tâches
	  * @param task_id
	  * @return sum
	  * @throws SQLException
	  * @throws ClassNotFoundException
	  */
	 public int deleteTask(int task_id) throws SQLException, ClassNotFoundException {
		 String sql = "delete from t_task where task_id = ?";
		 int sum = 0;
			 try(Connection con = ConnectionManager.getConnection();
			 PreparedStatement pstmt = con.prepareStatement(sql)){
				 pstmt.setInt(1, task_id);
				 sum = pstmt.executeUpdate();
		 }
		 return sum;
	 }

Création de servlet

Ici, récupérez les informations de la tâche sélectionnée à partir de l'écran de la liste des tâches, placez-les dans l'étendue de la session et transférez-les sur l'écran de confirmation.

servlet.TaskDeleteDetailServlet.java


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub

		TaskDAO taskdao = new TaskDAO();
		TaskBean task = new TaskBean();
		CategoryDAO categorydao = new CategoryDAO();
		StatusDAO statusdao = new StatusDAO();
		UserDAO userdao = new UserDAO();

		//Obtenir les paramètres de la demande
		request.setCharacterEncoding("UTF-8");
		int task_id = Integer.parseInt(request.getParameter("task_id"));

		try {
			task = taskdao.getSpecificTask(task_id);
			int category_id = task.getCategory_id();
			String status_code = task.getStatus_code();
			String user_id = task.getUser_id();
			String category_name = categorydao.getCategoryName(category_id);
			String status_name = statusdao.getStatusName(status_code);
			String user_name = userdao.getUserName(user_id);
			int version = task.getVersion();
			request.setAttribute("task", task);
			request.setAttribute("category_name", category_name);
			request.setAttribute("status_name", status_name);
			request.setAttribute("user_name", user_name);
			request.setAttribute("version", version);

		}catch(SQLException | ClassNotFoundException e) {
			e.printStackTrace();
		}
		RequestDispatcher rd = request.getRequestDispatcher("task-delete.jsp");
		rd.forward(request, response);
	}

servlet.TaskDeleteServlet.java


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//Obtenir les paramètres de la demande
		request.setCharacterEncoding("UTF-8");
		int task_id = Integer.parseInt(request.getParameter("task_id"));
		int version =  Integer.parseInt(request.getParameter("version"));
		TaskDAO taskdao = new TaskDAO();

		List<String> error = new ArrayList<String>();


		try{
			//Confirmer la version
			int current_version = taskdao.getVersion(task_id);
			if(current_version != version) {
				error.add("Cette tâche a été écrasée par quelqu'un d'autre");
				request.setAttribute("error", error);
				RequestDispatcher rd = request.getRequestDispatcher("task-update-failure.jsp");
				rd.forward(request, response);
			}

			//Supprimer l'exécution de la tâche
			taskdao.deleteTask(task_id);
			RequestDispatcher rd = request.getRequestDispatcher("task-delete-comp.jsp");
			rd.forward(request, response);
		} catch(SQLException | ClassNotFoundException e) {
			RequestDispatcher rd = request.getRequestDispatcher("task-delete-failure.jsp");
			rd.forward(request, response);
		}
	}

Aperçu de la prochaine fois

Cette fois, nous avons implémenté la fonction de suppression. La fonctionnalité minimale pour une première application peut être obtenue en utilisant le code dans les articles jusqu'à présent. La prochaine fois, je présenterai le processus appelé contrôle exclusif lorsque plusieurs utilisateurs envisagent d'utiliser l'application en même temps.

Recommended Posts

Système de gestion de clone / tâches Java / Twitter ⑥ Ajouter une fonction de suppression
Système de gestion des tâches / clone Java / Twitter (2) Ajouter une fonction de connexion
Système de gestion de clones / tâches Java / Twitter ⑤ Ajouter une fonction d'édition
Système de gestion de clones / tâches Java / Twitter ③ Ajout d'une fonction d'enregistrement de tâches
Clone Java / Twitter / système de gestion des tâches ④ Afficher la liste des tâches
Système de gestion des tâches / clones Java / Twitter ① Créer une base de données
Java (add2)
Java (ajouter)