Java / Twitter-Klon- / Aufgabenverwaltungssystem ④ Aufgabenliste anzeigen

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

Zweck

  1. Ansicht erstellen
  2. DAO erstellen (Listenanzeige / -sortierung)
  3. Erstellen eines Servlets (Auflisten / Sortieren)
  4. DAO erstellen (Suchfunktion)
  5. Servlet erstellen (Suchfunktion)
  6. Nächster Hinweis

Ansicht erstellen

Erstellen Sie ein Suchformular und eine Aufgabenlistentabelle

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.List, model.entity.TaskBean, model.entity.UserBean, model.dao.UserDAO, model.dao.CategoryDAO, model.dao.StatusDAO"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Aufgabenliste</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/task-list.css">
</head>
<body>
<%
List<TaskBean> tasklist = (List<TaskBean>) request.getAttribute("tasklist");
UserDAO userdao = new UserDAO();
CategoryDAO categorydao = new CategoryDAO();
StatusDAO statusdao = new StatusDAO();
String error = (String)request.getAttribute("error");
%>
<!-- *****************Suchformular**********************-->
<jsp:include page="header.jsp"/>
	<div class="contain">
		<h3>Squeeze-Suche</h3>
		<form action="task-search-servlet" method="post">
		<table class="form-table search-table">
    		<tbody>
	    		<tr>
				    <th>Eingeschränkt nach Aufgabennamen</th>
				        <td>
				        <div class="search-key">
							<input type="text" class="form-control" name="task_name">
						</div>
				    </td>
			   	</tr>
		       	<tr>
		        	<th>Eingeschränkt nach Kategorien</th>
		        	<td>
				        <div class="search-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>Eingeschränkt nach Status</th>
				        <td>
				        <div class="search-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><input type="submit" value="Suche" class="search-button"></th>
			        <td>
			        </td>
		        </tr>
		    </tbody>
		</table>
	  	</form>
<!-- *****************Aufgabenlistentabelle (Sortieren nach ▼ Schaltfläche ohne Tabelle)*********-->  
		<h3>Aufgabenliste</h3>
<%if(error != null){ %>
		<p class="error"><%=error %></p>
<%} %>
		<div class="table-wrapper">
			<table class="list-table" border="1">
		  		<thead>
					<tr class="table-header">
						<th class="fixed01">
							<div class="title">Aufgaben-ID</div>
							<div class="sort-box" >
								<form action="task-list-servlet" method="post" class="sort-form">
									<input type="submit" value="▲" class="sort">
								</form>
								<form action="task-order-by-id-desc" method="post" class="sort-form">
									<input type="submit" value="▼" class="sort">
								</form>
							</div>
						</th>
						<th class="fixed01"><div class="title">Aufgabennname</div></th>
						<th class="fixed01">
							<div class="title">Kategorie</div>
							<form action="task-order-by-category-servlet" method="post" class="sort-form">
								<input type="submit" value="▲" class="sort">
							</form>
							<form action="task-order-by-category-desc" method="post" class="sort-form">
								<input type="submit" value="▼" class="sort">
							</form>
						</th>
						<th class="fixed01">
							<div class="title">Frist</div>
							<form action="task-order-by-limit-servlet" method="post" class="sort-form">
								<input type="submit" value="▲" class="sort">
							</form>
							<form action="task-order-by-limit-desc" method="post" class="sort-form">
								<input type="submit" value="▼" class="sort">
							</form>
						</th>
						<th class="fixed01">
							<div class="title">Nutzer</div>
							<form action="task-order-by-user-servlet" method="post" class="sort-form">
								<input type="submit" value="▲" class="sort">
							</form>
							<form action="task-order-by-user-desc" method="post" class="sort-form">
								<input type="submit" value="▼" class="sort">
							</form>
						</th>
						<th class="fixed01">
							<div class="title">Status</div>
							<form action="task-order-by-status-servlet" method="post" class="sort-form">
								<input type="submit" value="▲" class="sort">
							</form>
							<form action="task-order-by-status-desc" method="post" class="sort-form">
								<input type="submit" value="▼" class="sort">
							</form>
						</th>
						<th class="title fixed01">Memo</th>
						<th class="title fixed01">Eingetragenes Datum</th>
						<th class="title fixed01">Datum und Uhrzeit aktualisieren</th>
						<th colspan="3" class="title fixed01">Aufgabenmanagement</th>
					</tr>
				</thead>
				<tbody>
	<%
	for(TaskBean task : tasklist){
		String user_name = userdao.getUserName(task.getUser_id());
		String category_name = categorydao.getCategoryName(task.getCategory_id());
		String status_name = statusdao.getStatusName(task.getStatus_code());
	%>
					<tr >
						<td class="parameter"><%=task.getTask_id() %></td>
						<td class="parameter"><%=task.getTask_name() %></td>
						<td class="parameter"><%=task.getCategory_id() %>:<%=category_name %></td>
						<td class="parameter"><%=task.getLimit_date() %></td>
						<td class="parameter"><%=user_name %></td>
						<td class="parameter"><%=task.getStatus_code() %>:<%=status_name %></td>
						<td class="parameter"><%=task.getMemo() %></td>
						<td class="parameter"><%=task.getCreate_datetime() %></td>
						<td class="parameter"><%=task.getUpdate_datetime() %></td>
						<td class="parameter">
							<form action="task-update-detail-servlet" method="post">
								<input type="hidden" name="task_id" value="<%=task.getTask_id() %>">
								<button type="submit" class="task-button">aktualisieren</button>
							</form>
						</td>
						<td class="parameter">
							<form action="task-delete-detail-servlet" method="post">
								<input type="hidden" name="task_id" value="<%=task.getTask_id() %>">
								<button type="submit" class="task-button">Löschen</button>
							</form>
						</td>
						<td class="parameter">
							<form action="comment-detail-servlet" method="post">
								<input type="hidden" name="task_id" value="<%=task.getTask_id() %>">
								<button type="submit" class="task-button">Kommentar</button>
							</form>
						</td>
					</tr>
	<%
	}
	%>
				</tbody>
			</table>
		</div>
	</div>
</body>
</html>

DAO-Erstellung (Listenanzeige / -sortierung)

Sie können einfach eine SQL-Anweisung zum Sortieren erstellen, indem Sie den Teil t_task dieser SQL-Anweisung in category_id oder limit_date ändern. Dieses Mal haben wir es möglich gemacht, in der Reihenfolge task_id, limit_date, category_id, status_code, user_id zu sortieren.

model.dao.TaskDAO.java


	/**
	 *Liste der Aufgaben
	 * @return tasklist
	 * @throws SQLException
	 * @throws ClassNotFoundException
	 */
	//Nach Aufgaben-ID
	public List<TaskBean> getTaskList() throws SQLException, ClassNotFoundException{
		String sql = "select * from t_task";
		List<TaskBean> tasklist = new ArrayList<TaskBean>();

		try(Connection con = ConnectionManager.getConnection();
				Statement stmt = con.createStatement();
				ResultSet res = stmt.executeQuery(sql)){
				//Die erfassten SQL-Spalten werden der Reihe nach im Task-Objekt gespeichert. Zum Schluss zur Aufgabenliste hinzufügen
				while(res.next()) {
					TaskBean task = new TaskBean();
					task.setTask_id(res.getInt("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"));

					tasklist.add(task);
				}
		}
		return tasklist;
	}
	//Umkehren
		public List<TaskBean> getTaskListOrderByIdDesc() throws SQLException, ClassNotFoundException{
			String sql = "select * from t_task order by task_id desc";
			List<TaskBean> tasklist = new ArrayList<TaskBean>();
			try(Connection con = ConnectionManager.getConnection();
					Statement stmt = con.createStatement();
					ResultSet res = stmt.executeQuery(sql)){
					//Die erfassten SQL-Spalten werden der Reihe nach im Task-Objekt gespeichert. Zum Schluss zur Aufgabenliste hinzufügen
					while(res.next()) {
						TaskBean task = new TaskBean();
						task.setTask_id(res.getInt("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"));

						tasklist.add(task);
					}
			}
			return tasklist;
		}

Servlet erstellen (Auflisten / Sortieren)

Zunächst wird es beim Übergang vom Menübildschirm angezeigt. Die Liste wird erst angezeigt, wenn Sie angemeldet sind.

servlet.TaskListServlet.java


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

		try {
			HttpSession session = request.getSession();
			boolean logincheck = (Boolean)session.getAttribute("login");
			if(logincheck) {
				//Speichern Sie alle erfassten Aufgaben, um den Bereich anzufordern
				List<TaskBean> tasklist = dao.getTaskList();
				request.setAttribute("tasklist", tasklist);

				//Nach vorne
				RequestDispatcher rd = request.getRequestDispatcher("task-list.jsp");
				rd.forward(request, response);
			}

		} catch(SQLException | ClassNotFoundException | NullPointerException e) {
			e.printStackTrace();
			RequestDispatcher rd = request.getRequestDispatcher("login.html");
			rd.forward(request, response);
		}

Das folgende Beispiel zeigt ein Servlet, das gesendet wird, wenn jede Sortiertaste gedrückt wird. Erstellen Sie ein Servlet für jede in TaskDAO.java definierte Sortiermethode. Dies ist beispielsweise ein Servlet, das Aufgaben in absteigender Reihenfolge von task_id abruft.

TaskOrderByIdDesc.java


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		TaskDAO dao = new TaskDAO();
		List<TaskBean> tasklist = null;
		try {
//Ändern Sie einfach die hier verwendete Methode.
			tasklist = dao.getTaskListOrderByIdDesc();
		} catch(SQLException | ClassNotFoundException e) {
			e.printStackTrace();
		}

		request.setAttribute("tasklist", tasklist);
		RequestDispatcher rd = request.getRequestDispatcher("task-list.jsp");
		rd.forward(request, response);
	}

Damit ist die Anzeige- und Sortierfunktion der Aufgabenliste abgeschlossen.

Als nächstes werden wir die Suchfunktion implementieren.

DAO-Erstellung (Suchfunktion)

Die Suchfunktion kann nach Aufgabenname, Kategorie-ID, Statuscode eingrenzen.

	/**
	 *Suchmethode
	 * @param task_name
	 * @param category_id
	 * @param status_code
	 * @return
	 * @throws SQLException
	 * @throws ClassNotFoundException
	 */
	public List<TaskBean> searchTask(String task_name, int category_id, String status_code) throws SQLException, ClassNotFoundException{
		//SQL-Anweisung (wird verwendet, wenn alle Suchformulare ausgefüllt sind)
		String sql = "select * from t_task where task_name like ? and category_id = ? and status_code = ?";
		//Erstellen Sie eine SQL-Anweisung, die nur die ausgewählten Elemente für jedes Suchelement verwendet
		if(category_id == 0 && status_code == "0") {
			sql = "select * from t_task where task_name like ?";
		}else if(category_id ==0) {
			sql = "select * from t_task where task_name like ? and status_code = ?";
		}else if(status_code == "0") {
			sql = "select * from t_task where task_name like ? and category_id = ?";
		}

		List<TaskBean> tasklist = new ArrayList<TaskBean>();
		try(Connection con = ConnectionManager.getConnection();
				PreparedStatement pstmt = con.prepareStatement(sql)){
      //Weisen Sie für jedes Suchelement wie zuvor Argumente in einem Formular zu und geben Sie es an, das der SQL-Anweisung entspricht, die nur die ausgewählten Elemente verwendet.
			if(category_id == 0 && status_code == "0") {
				pstmt.setString(1, task_name);
			}else if(category_id ==0) {
				pstmt.setString(1, task_name);
				pstmt.setString(2, status_code);
			}else if(status_code == "0") {
				pstmt.setString(1, task_name);
				pstmt.setInt(2, category_id);
			}else {
				pstmt.setString(1, task_name);
				pstmt.setInt(2, category_id);
				pstmt.setString(3, status_code);
			}

			ResultSet res = pstmt.executeQuery();
			//Die erfassten SQL-Spalten werden der Reihe nach im Task-Objekt gespeichert. Zum Schluss zur Aufgabenliste hinzufügen
			while(res.next()) {
				TaskBean task = new TaskBean();
				task.setTask_id(res.getInt("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"));

				tasklist.add(task);
			}
		}
		return tasklist;
	}

Servlet erstellen (Suchfunktion)

Bitte versuchen Sie es, während Sie sich die Kommentare ansehen.

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		TaskDAO taskdao = new TaskDAO();
		List<TaskBean> tasklist = new ArrayList<TaskBean>();

		//Anforderungsparameter abrufen
		request.setCharacterEncoding("UTF-8");
		String task_name = request.getParameter("task_name");
		String category_id_str = request.getParameter("category_id");
		String status_code = request.getParameter("status_code");

		//Überprüfen Sie, ob Eingaben fehlen
		if(category_id_str.equals("Choose...")) {
			category_id_str = "0";
		}
		if(status_code.equals("Choose...")) {
			status_code = "0";
		}

		task_name = "%" + task_name + "%";

		//category_ID an int-Typ zurückgeben
		int category_id = Integer.parseInt(category_id_str);

		try {
			//Suche nach verfeinerten Inhalten
			tasklist = taskdao.searchTask(task_name, category_id, status_code);

			//Wenn die Aufgabenliste 0 ist, wird ein Fehlerbildschirm angezeigt.
			if(tasklist.size() == 0) {
				String error = "Es gibt kein Ergebnis";
				request.setAttribute("error", error);
			}

		}catch(SQLException | ClassNotFoundException e) {
			e.printStackTrace();
			RequestDispatcher rd = request.getRequestDispatcher("task-list-servlet");
			rd.forward(request, response);
		}
		request.setAttribute("tasklist", tasklist);
		RequestDispatcher rd = request.getRequestDispatcher("task-list.jsp");
		rd.forward(request, response);
	}
  1. Nächster Hinweis Dieses Mal haben wir daran gearbeitet, die Aufgabenliste anzuzeigen und zu verarbeiten. Das nächste Mal werde ich die Aufgabenbearbeitungsfunktionen zusammenfassen, die von der Aufgabenliste übernommen werden können.

Recommended Posts

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