Java / Twitter-Klon- / Aufgabenverwaltungssystem ⑤ Bearbeitungsfunktion 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

Dieses Mal erstellen wir eine Bearbeitungsseite. Es ist dem Bildschirm zur Aufgabenregistrierung, den ich im vorherigen Artikel geschrieben habe, sehr ähnlich. Bitte überprüfen Sie ihn einfach. Für die Bearbeitung von Aufgaben können angemeldete Benutzer andere als die von ihnen selbst geposteten Dinge bearbeiten.

task-update.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Aufgabenbearbeitung</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/task-insert.css">
</head>
<body>
<jsp:include page="header.jsp"/>
<jsp:useBean id="task" scope="session" class="model.entity.TaskBean"/>

	<div class="contain">
		<h3>Aufgabenregistrierung</h3>
		<form action="task-update-servlet" method="post">
			<table class="form-table" border="1">
	    		<tbody>
		    		<tr>
					    <th>Aufgabennname</th>
					        <td>
					        <div class="input-key">
								<input type="text" class="form-control" name="task_name" value="<jsp:getProperty property="task_name" name="task"/>">
							</div>
					    </td>
				   	</tr>
			       	<tr>
			        	<th>Kategorie</th>
			        	<td>
					        <div class="input-key">
					      		<select class="form-control" name="category_id">
        							<option value="<jsp:getProperty property="category_id" name="task"/>">Keine Änderung</option>
        							<option value="1">Neues Produkt A: Entwicklungsprojekt</option>
        							<option value="2">Bestehendes Produkt B.:Verbesserungsprojekt</option>
      							</select>
						    </div>
					    </td>
				    </tr>
				    <tr>
					    <th>Frist</th>
					        <td>
					        <div class="input-key">
								<input type="date" name="limit_date" class="form-control" value="<jsp:getProperty property="limit_date" name="task"/>">
							</div>
					    </td>
				   	</tr>
			        <tr>
					    <th>Status</th>
				        <td>
					        <div class="input-key">
				      			<select class="form-control" name="status_code">
       								<option value="<jsp:getProperty property="status_code" name="task"/>">Keine Änderung</option>
       								<option value="00">noch nicht angefangen</option>
       								<option value="50">Start</option>
       								<option value="99">Erledigt</option>
    		 					</select>
				    		</div>
				        </td>
			        </tr>
			        <tr>
					    <th>Memo</th>
					        <td>
					        <div class="input-key">
								<input type="text" class="form-control" name="memo" value="<jsp:getProperty property="memo" name="task"/>">
							</div>
					    </td>
				   	</tr>
				    <tr>
				        <th>Erstellungsdatum</th>
				        <td><jsp:getProperty property="create_datetime" name="task"/><input type="hidden" name="create_datetime" value="<jsp:getProperty property="create_datetime" name="task"/>"></td>
			        </tr>
			        <tr>
				        <th>
				        	<input type="hidden" name="task_id" value="<jsp:getProperty property="task_id" name="task"/>">
			        		<input type="hidden" name="version" value='<jsp:getProperty property="version" name="task"/>'>
			        		<input type="submit" value="Aktualisieren" class="input-submit"></th>
				        <td></td>
			        </tr>
			    </tbody>
			</table>
	    </form>
	</div>
</body>
</html>

Zusätzlich bereiten wir einen Bildschirm vor, wenn die Bearbeitung erfolgreich ist. Die bearbeiteten Inhalte werden hier angezeigt.

task-update-comp.java


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="model.entity.TaskBean"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Update abgeschlossen</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/task-edit-failure.css">
</head>
<body>
<jsp:useBean id="task" class="model.entity.TaskBean" scope="session"/>
<%
String category_name = (String)request.getAttribute("category_name");
String status_name = (String)request.getAttribute("status_name");
%>
	<jsp:include page="header.jsp"/>
	<div class="contain">
		<div class="box">
		  	<h3>Aufgabenaktualisierung abgeschlossen</h3>
		  	<p>Aktualisiert mit den folgenden Inhalten</p>
		  	<hr>
		 	<p>
Aufgabennname:<jsp:getProperty property="task_name" name="task"/><br>
Kategorie:<jsp:getProperty property="category_id" name="task"/>:<%=category_name %><br>
Frist:<jsp:getProperty property="limit_date" name="task"/><br>
Status:<jsp:getProperty property="status_code" name="task"/>:<%=status_name %><br>
Hinweis:<jsp:getProperty property="memo" name="task"/><br>
		 	 </p>
	 	 </div>
	</div>
</body>
</html>

Bereiten Sie auch einen Bildschirm vor, wenn dies fehlschlägt Zeigen Sie den Grund für den Fehler an

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.List"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Fehler beim Aktualisieren der Aufgabe</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/task-edit-failure.css">
</head>
<body>
<%
List<String> error = (List<String>)request.getAttribute("error");
%>
	<jsp:include page="header.jsp"/>
	<div class="contain">
		<div class="box">
			<h3>Aufgabe konnte nicht aktualisiert werden</h3>
			<hr>
			<p>*Folgende Ursachen sind möglich</p>
		    <ul>
<%for(String er : error){ %>
		  		<li><%=er %></li>
<%} %>
		  	</ul>
		</div>
	</div>
</body>
</html>

DAO erstellen

Erstellen einer Methode zum Aktualisieren von Aufgaben und einer Methode zum Abrufen der angegebenen Aufgabe

model.dao.TaskDAO.java


 /**
	  *Methode zum Aktualisieren von Aufgaben
	  * @param task
	  * @return sum
	  * @throws SQLException
	  * @throws ClassNotFoundException
	  */
	 public int updateTask(TaskBean task) throws SQLException, ClassNotFoundException {
		 String sql = "update t_task set task_name = ?, category_id = ?, limit_date = ?, status_code = ?, memo = ?, version = version + 1 where task_id = ? and version = ?";
		 int sum = 0;
		 try(Connection con = ConnectionManager.getConnection();
				 PreparedStatement pstmt = con.prepareStatement(sql)){
			 pstmt.setString(1, task.getTask_name());
			 pstmt.setInt(2, task.getCategory_id());
			 pstmt.setDate(3, task.getLimit_date());
			 pstmt.setString(4, task.getStatus_code());
			 pstmt.setString(5, task.getMemo());
			 pstmt.setInt(6, task.getTask_id());
			 pstmt.setInt(7, task.getVersion());
			 sum = pstmt.executeUpdate();
		 }
		 return sum;
	 }

/**
	 * 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;
	 }

Servlet erstellen

Speichern Sie die auf dem Listenbildschirm ausgewählten Aufgabeninformationen im Sitzungsbereich und zeigen / bearbeiten Sie sie am Übertragungsziel (task-update.java).

servlet.TaskUpdateDetailServlet.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"));

		TaskDAO dao = new TaskDAO();
		TaskBean task = new TaskBean();

		try {
			//Speichern Sie die angegebene Aufgabe im Sitzungsbereich
			task = dao.getSpecificTask(task_id);
			HttpSession session = request.getSession();
			session.setAttribute("task", task);
			RequestDispatcher rd = request.getRequestDispatcher("task-update.jsp");
			rd.forward(request, response);
		}catch(SQLException | ClassNotFoundException e) {
			e.printStackTrace();
		}

Nach der Bearbeitung werden die DB-Verarbeitung und der Bildschirmübergang mit dem folgenden Servlet ausgeführt

servlet.TaskUpdateServket.java


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

		TaskDAO taskdao = new TaskDAO();
		CategoryDAO categorydao = new CategoryDAO();
		StatusDAO statusdao = new StatusDAO();

		//Anforderungsparameter abrufen
		request.setCharacterEncoding("UTF-8");
		int task_id = Integer.parseInt(request.getParameter("task_id"));
		String task_name = request.getParameter("task_name");
		String category_id_str = request.getParameter("category_id");
		String limit_date_check = request.getParameter("limit_date");
		String status_code = request.getParameter("status_code");
		String memo = request.getParameter("memo");
		int version = Integer.parseInt(request.getParameter("version"));

		//Listengenerierung zum Speichern der Fehleranzeige
		List<String> error = new ArrayList<String>();

		//Sitzungsprüfung
		HttpSession session = request.getSession();
		boolean sessioncheck = (boolean)session.getAttribute("login");
		if(!sessioncheck) {
			error.add("Bitte melden Sie sich an und registrieren Sie die Aufgabe");
		}

		//Überprüfen Sie, ob Eingaben fehlen
		if(task_name.equals("")) {
			error.add("Der Aufgabenname ist leer");
		}
		boolean limit_check;
		limit_date_check = limit_date_check.replace('-', '/');
	    DateFormat format = DateFormat.getDateInstance();
		format.setLenient(false);
		try {
			format.parse(limit_date_check);
			 limit_check = true;
		} catch(Exception e) {
			limit_check = false;
		}
		if(!limit_check) {
			error.add("Bitte geben Sie das Datum für die Frist ein");
		}

		request.setAttribute("error", error);

		if(task_name != "") {
			try {
				//Konvertiert Kategorien und Fristen (Nicht-String-Typ), die nicht gemäß den Parametern empfangen werden können
				int category_id = Integer.parseInt(category_id_str);
				Date limit_date = Date.valueOf(request.getParameter("limit_date"));

				//Ordnen Sie die aktuelle Version der Version zum Zeitpunkt der Datensatzerfassung zu
				int current_version = taskdao.getVersion(task_id);
				if(current_version != version) {
					error.add("Diese Aufgabe wurde von anderen neu organisiert");
					request.setAttribute("error", error);
					RequestDispatcher rd = request.getRequestDispatcher("task-update-failure.jsp");
					rd.forward(request, response);
				}

				//Legen Sie den Wert für das Aufgabenobjekt fest
				TaskBean task = new TaskBean();
				task.setTask_name(task_name);
				task.setCategory_id(category_id);
				task.setLimit_date(limit_date);
				task.setStatus_code(status_code);
				task.setMemo(memo);
				task.setTask_id(task_id);
				task.setVersion(version);

				//Datenbankverarbeitung nach Aktualisierungsmethode
				taskdao.updateTask(task);

				//Aufgabe im Sitzungsbereich speichern
				session.setAttribute("task", task);

				//Speichern Sie den Kategorienamen und den Statusnamen, um den Bereich anzufordern
				String category_name = categorydao.getCategoryName(task.getCategory_id());
				String status_name = statusdao.getStatusName(task.getStatus_code());
				request.setAttribute("category_name", category_name);
				request.setAttribute("status_name", status_name);

				RequestDispatcher rd = request.getRequestDispatcher("task-update-comp.jsp");
				rd.forward(request, response);
			} catch(SQLException | ClassNotFoundException | IllegalArgumentException e) {
				RequestDispatcher rd = request.getRequestDispatcher("task-update-failure.jsp");
				rd.forward(request, response);
			}
		}else {
			RequestDispatcher rd = request.getRequestDispatcher("task-update-failure.jsp");
			rd.forward(request, response);
			}
	}

Vorschau beim nächsten Mal

Dieses Mal haben wir die Aufgabenbearbeitungsfunktion implementiert. Nächstes Mal werden wir die Funktion zum Löschen von Aufgaben implementieren.

Recommended Posts

Java / Twitter-Klon- / Aufgabenverwaltungssystem ⑤ Bearbeitungsfunktion hinzufügen
Java / Twitter-Klon- / Aufgabenverwaltungssystem ⑥ Löschfunktion hinzufügen
Java / Twitter-Klon- / Aufgabenverwaltungssystem (2) Anmeldefunktion 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)