Java / Twitter-Klon- / Aufgabenverwaltungssystem ⑥ Löschfunktion hinzufügen

Einführung

Ich möchte einen Artikel für diejenigen schreiben, die zum ersten Mal Anwendungen mit Java schreiben. Wir würden uns freuen, wenn Sie es als Referenz für die Erstellung von Schulungsthemen für Ihr Portfolio und Ihr Unternehmen verwenden könnten. Dieses Mal erstellen wir einen Task-Manager. Auf diese Weise können auch Twitter-Klone erstellt werden.

Ich werde Artikel für jede Funktion der Anwendung veröffentlichen.

  1. Datenbank erstellen
  2. Anmeldefunktion
  3. Aufgabenregistrierungsfunktion
  4. Listenanzeige -Sort Funktion -Suchfunktion
  5. Bearbeitungsfunktion
  6. Funktion löschen
  7. Exklusive Kontrolle

Ausführungsumgebung

eclipse4.16.0 Tomcat9 Java11 Mysql5.7

Inhaltsverzeichnis

  1. Ansicht erstellen
  2. Erstellen Sie DAO
  3. Erstellen Sie ein Servlet
  4. Nächster Hinweis

Ansicht erstellen

Bitten Sie hier um Bestätigung der Aufgabendetails, bevor Sie eine Aufgabe löschen

task-delete.java


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Aufgabe löschen</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>Aufgabe löschen</h3>
		</div>
		<table class="table">
		  <thead>
		    <tr>
		      <th scope="col"></th>
		      <th scope="col">Möchten Sie diese Aufgabe löschen?</th>
		    </tr>
		  </thead>
		  <tbody>
		  <tr>
		      <th scope="row">Aufgaben-ID</th>
		      <td><jsp:getProperty property="task_id" name="task"/></td>
		    </tr>
		    <tr>
		      <th scope="row">Aufgabennname</th>
		      <td><jsp:getProperty property="task_name" name="task"/></td>
		    </tr>
		    <tr>
		      <th scope="row">Kategorie</th>
		      <td><jsp:getProperty property="category_id" name="task"/>:<%=category_name %></td>
		    </tr>
		    <tr>
		      <th scope="row">Frist</th>
		      <td><jsp:getProperty property="limit_date" name="task"/></td>
		    </tr>
		    <tr>
		      <th scope="row">Nutzername</th>
		      <td><%=user_name %></td>
		    </tr>
		    <tr>
		      <th scope="row">Status</th>
		      <td><jsp:getProperty property="status_code" name="task"/>:<%=status_name %></td>
		    </tr>
		    <tr>
		      <th scope="row">Memo</th>
		      <td><jsp:getProperty property="memo" name="task"/></td>
		    </tr>
		    <tr>
		      <th scope="row">Eingetragenes Datum</th>
		      <td><jsp:getProperty property="create_datetime" name="task"/></td>
		    </tr>
		    <tr>
		      <th scope="row">Datum und Uhrzeit aktualisieren</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">Löschen</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>

Wenn die Aufgabe erfolgreich gelöscht werden kann, lassen Sie sie auf diesem Bildschirm bestätigen.

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>Löschung abgeschlossen</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>Die Aufgabe wurde gelöscht</h3>
		</div>
	</div>
</body>
</html>

Zeigen Sie diesen Bildschirm an, wenn das Löschen von Aufgaben fehlschlägt (Wenn Sie es aus irgendeinem Grund nicht löschen können, z. B. weil das nächste Mal eine exklusive Kontrolle durchgeführt werden soll, werden wir Sie hier informieren.)

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>Aufgabe konnte nicht gelöscht werden</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>Aufgabe konnte nicht gelöscht werden</h3>
		</div>
	</div>
</body>
</html>

DAO erstellen

Hier sehen Sie auch die Methoden, die im zuvor erstellten Artikel zum Bearbeiten von Aufgaben angezeigt werden. Bitte sehen Sie nur diejenigen, die es brauchen

model.dao.TaskDAO.java


/**
	 * task_Holen Sie sich eine bestimmte Aufgabe mit id als 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();
			 //Speichern Sie Spalteninformationen im Aufgabenobjekt
			 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;
	 }

/**
	  *Methode zum Löschen von Aufgaben
	  * @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;
	 }

Servlet-Erstellung

Hier können Sie die Informationen der ausgewählten Aufgabe aus dem Aufgabenlistenbildschirm abrufen, in den Sitzungsbereich einfügen und auf den Bestätigungsbildschirm übertragen.

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

		//Anforderungsparameter abrufen
		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
		//Anforderungsparameter abrufen
		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{
			//Version bestätigen
			int current_version = taskdao.getVersion(task_id);
			if(current_version != version) {
				error.add("Diese Aufgabe wurde von jemand anderem überschrieben");
				request.setAttribute("error", error);
				RequestDispatcher rd = request.getRequestDispatcher("task-update-failure.jsp");
				rd.forward(request, response);
			}

			//Aufgabenausführung löschen
			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);
		}
	}

Vorschau beim nächsten Mal

Dieses Mal haben wir die Löschfunktion implementiert. Die Mindestfunktionalität für eine erstmalige Anwendung kann mithilfe des Codes in den bisherigen Artikeln erreicht werden. Beim nächsten Mal werde ich den als exklusive Steuerung bezeichneten Prozess einführen, wenn mehrere Benutzer die Anwendung gleichzeitig verwenden möchten.

Recommended Posts

Java / Twitter-Klon- / Aufgabenverwaltungssystem ⑥ Löschfunktion hinzufügen
Java / Twitter-Klon- / Aufgabenverwaltungssystem (2) Anmeldefunktion hinzufügen
Java / Twitter-Klon- / Aufgabenverwaltungssystem ⑤ Bearbeitungsfunktion hinzufügen
Java / Twitter-Klon- / Aufgabenverwaltungssystem ③ Aufgabenregistrierungsfunktion hinzufügen
Java / Twitter-Klon- / Aufgabenverwaltungssystem ④ Aufgabenliste anzeigen
Java / Twitter-Klon- / Aufgabenverwaltungssystem (1) Erstellen Sie eine Datenbank
Java (add2)
Java (hinzufügen)