Java / Twitter-Klon- / Aufgabenverwaltungssystem ③ Aufgabenregistrierungsfunktion 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

Inhaltsverzeichnis

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

Ansicht erstellen

Dies ist eine übliche Eingabeform.

task-insert.jsp


<body>
<!-- header.jsp wird zuletzt erstellt-->
<jsp:include page="header.jsp"/>
	<div class="contain">
		<h3>Aufgabenregistrierung</h3>
<!-- task-insert-Übergeben Sie jeden Eingabeparameter an das Servlet-->
		<form action="task-insert-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" size="60" placeholder="Bitte eingeben">
							</div>
					    </td>
				   	</tr>
			       	<tr>
			        	<th>Kategorie</th>
			        	<td>
					        <div class="input-key">
					      		<select class="form-control" name="category_id">
			        				<option selected>Choose...</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" size="60">
							</div>
					    </td>
				   	</tr>
			        <tr>
					    <th>Status</th>
				        <td>
					        <div class="input-key">
				      			<select class="form-control" name="status_code" >
				        			<option selected>Choose...</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" size="60">
							</div>
					    </td>
				   	</tr>
				    <tr>
				        <th><input type="submit" value="Anmeldung" class="input-submit"></th>
				        <td></td>
			        </tr>
			    </tbody>
			</table>
	    </form>
	</div>
</body>

Dies ist der Bestätigungsbildschirm, wenn die Buchung abgeschlossen ist. Hier können Sie sehen, was Sie posten.

task-insert-comp.jsp


<body>
<%
String task_name = (String)request.getAttribute("task_name");
int category_id = (int)request.getAttribute("category_id");
String category_name = (String)request.getAttribute("category_name");
Date limit_date = (Date)request.getAttribute("limit_date");
String status_code = (String)request.getAttribute("status_code");
String status_name = (String)request.getAttribute("status_name");
String memo = (String)request.getAttribute("memo");

%>
<jsp:include page="header.jsp"/>
	<div class="contain">
		<div class="box">
		  <h3>Die Aufgabenregistrierung ist abgeschlossen</h3>
		  <p>Ich habe mich mit folgenden Inhalten registriert</p>
		  <hr>
		  <p>
Aufgabennname:<%=task_name %><br>
Kategorie:<%=category_id %>:<%=category_name %><br>
Frist:<%=limit_date %><br>
Status:<%=status_code %>:<%=status_name %><br>
Hinweis:<%=memo %><br>
		  </p>
		  <a href="menu.jsp">Zurück zum Menü</a>
		</div>
	</div>
</body>

Dies ist die Anzeige, wenn die Buchung fehlschlägt. Insbesondere im Falle eines Eingabefehlers wird der Ort des Fehlers angezeigt.

task-insert-failure.jsp


<body>
<!--Der Fehler im Anforderungsbereich listet die Gründe auf, warum die Eingabe falsch war. Erhalten Sie diese also-->
<%
List<String> error = (List<String>)request.getAttribute("error");
%>
	<jsp:include page="header.jsp"/>
	<div class="contain">
		<div class="box">
		  	<h3>Fehler beim Registrieren der Aufgabe</h3>
		  	<hr>
		  	<p>*Folgende Ursachen sind möglich</p>
		  	<ul>
<!--Anzeigefehler-->
<%for(String er : error){ %>
		  		<li><%=er %></li>
<%} %>
		  </ul>
		  <a href="task-insert.jsp">Kehren Sie zum Registrierungsbildschirm zurück</a>
		</div>
	</div>
</body>


DAO erstellen

Erstellen Sie zunächst eine Methode zur Aufgabenregistrierung.

model.dao.TaskDAO.java


/**
	 *Methode zur Aufgabenregistrierung
	 * @param task_name
	 * @param category_id
	 * @param limit_date
	 * @param user_id
	 * @param status_code
	 * @param memo
	 * @return Anzahl der Ausführungen
	 * @throws SQLException
	 * @throws ClassNotFoundException
	 */
	 public int insertTask(String task_name, int category_id, Date limit_date, String user_id, String status_code, String memo) throws SQLException, ClassNotFoundException {
//Eingabeparameter und Benutzer der SQL-Anweisung_Erstellen Sie einen Datensatz, indem Sie die ID angeben
		 String sql = "insert into t_task (task_name, category_id, limit_date, user_id, status_code, memo) values(?, ?, ?, ?, ?, ?)";
		 int sum = 0;
//Verbindung zur Datenbank herstellen
		 try(Connection con = ConnectionManager.getConnection();
				 PreparedStatement pstmt = con.prepareStatement(sql)){
			 pstmt.setString(1, task_name);
			 pstmt.setInt(2, category_id);
			 pstmt.setDate(3, limit_date);
			 pstmt.setString(4, user_id);
			 pstmt.setString(5, status_code);
			 pstmt.setString(6, memo);
//Ausführung der Update SQL-Anweisung
			 sum = pstmt.executeUpdate();
		 }
		 return sum;
	 }

Die ausführliche Erklärung ist dieselbe wie in Teil 2 UserDAO.java. Ich möchte den Statusnamen anzeigen, da er nur anhand der Status-ID leicht zu verstehen ist. Verwenden wir also eine Methode, um status_name mit status_id als Argument abzurufen

model.dao.StatusDAO.java


public class StatusDAO {
	/**
	 *Methode zum Abrufen des Statusnamens
	 * @param status_code
	 * @return
	 * @throws SQLException
	 * @throws ClassNotFoundException
	 */
	public String getStatusName(String status_code) throws SQLException, ClassNotFoundException {
		String sql = "select status_name from m_status where status_code = ?";
		String status_name ="Unbekannt";

		try(Connection con = ConnectionManager.getConnection();
				PreparedStatement pstmt = con.prepareStatement(sql)){
			pstmt.setString(1, status_code);
			ResultSet res = pstmt.executeQuery();

			while(res.next()) {
				status_name = res.getNString("status_name");
			}
		}
		return status_name;
	}
}

Die ausführliche Erklärung ist dieselbe wie in Teil 2 UserDAO.java. Ich möchte den Statusnamen anzeigen, da er nur mit der Kategorie Code leicht zu verstehen ist. Verwenden wir also eine Methode, um den Kategorienamen mit dem Kategoriecode als Argument abzurufen

model.dao.CategoryDAO.java


public class CategoryDAO {
	/**
	 *Methode zum Abrufen des Kategorienamens
	 * @param category_id
	 * @return
	 * @throws SQLException
	 * @throws ClassNotFoundException
	 */
	public String getCategoryName(int category_id) throws SQLException, ClassNotFoundException {
		String sql = "select category_name from m_category where category_id = ?";
		String category_name ="Unbekannt";

		try(Connection con = ConnectionManager.getConnection();
				PreparedStatement pstmt = con.prepareStatement(sql)){
			pstmt.setInt(1, category_id);
			ResultSet res = pstmt.executeQuery();

			while(res.next()) {
				category_name = res.getNString("category_name");
			}
		}
		return category_name;
	}

Servlet erstellen

servlet.TaskInsertServlet.java


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//DAO-Generation
		TaskDAO taskdao = new TaskDAO();
		CategoryDAO categorydao = new CategoryDAO();
		StatusDAO statusdao = new StatusDAO();

		//Parameter abrufen
		request.setCharacterEncoding("UTF-8");
		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");

		//Rufen Sie die angemeldeten Benutzerinformationen aus dem Sitzungsbereich ab und verwenden Sie user_ID abrufen
		HttpSession session = request.getSession();
		String user_id = (String)session.getAttribute("current_user_id");

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

		//Sitzungsprüfung
		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");
		}
		if(category_id_str.equals("Choose...")) {
			error.add("Keine Kategorie ausgewählt");
		}
		if(status_code.equals("Choose...")) {
			error.add( "Kein Status ausgewählt");
		}
		//Frist (Limit)_Datum) ist etwas Besonderes, da es sich um einen Datumstyp handelt
		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");
		}

		//Fehler speichern, um den Bereich anzufordern
		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"));

				//Datenbankverarbeitung nach Einfügemethode
				taskdao.insertTask(task_name, category_id, limit_date, user_id, status_code, memo);

				//Holen Sie sich den Kategorienamen / Statusnamen
				String category_name = categorydao.getCategoryName(category_id);
				String status_name = statusdao.getStatusName(status_code);

				//Speichern Sie die Registrierungsinformationen, um den Umfang anzufordern
				request.setAttribute("task_name", task_name);
				request.setAttribute("category_id", category_id);
				request.setAttribute("category_name", category_name);
				request.setAttribute("limit_date", limit_date);
				request.setAttribute("status_code", status_code);
				request.setAttribute("status_name", status_name);
				request.setAttribute("memo", memo);

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

Vorschau beim nächsten Mal

Diesmal habe ich die Aufgabenregistrierungsfunktion implementiert Das nächste Mal werde ich versuchen, eine Liste der registrierten Aufgaben anzuzeigen, eine Sortierfunktion hinzuzufügen und eine Suchfunktion hinzuzufügen.

Recommended Posts

Java / Twitter-Klon- / Aufgabenverwaltungssystem ③ Aufgabenregistrierungsfunktion hinzufügen
Java / Twitter-Klon- / Aufgabenverwaltungssystem ⑥ Löschfunktion hinzufügen
Java / Twitter-Klon- / Aufgabenverwaltungssystem (2) Anmeldefunktion hinzufügen
Java / Twitter-Klon- / Aufgabenverwaltungssystem ④ Aufgabenliste anzeigen
Java / Twitter-Klon- / Aufgabenverwaltungssystem (1) Erstellen Sie eine Datenbank
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)
Java (add2)
Java (hinzufügen)