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 Mysql5.7
Inhaltsverzeichnis
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>
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;
}
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);
}
}
Dieses Mal haben wir die Aufgabenbearbeitungsfunktion implementiert. Nächstes Mal werden wir die Funktion zum Löschen von Aufgaben implementieren.
Recommended Posts