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.
eclipse4.16.0 Tomcat9 Java11
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>
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;
}
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.
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;
}
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);
}
Recommended Posts