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
login.jsp
<body>
<!--Wenn ein Eingabefehler auftritt, wird diese Seite erneut geöffnet, damit Sie wissen, warum der Fehler aufgetreten ist. Erhalten Sie den Wert des Namensnamensfehlers des Anforderungsbereichs-->
<%
List<String> error = (List<String>)request.getAttribute("error");
%>
<div class="container mt-5">
<div class="row justify-content-center">
<h3>Anmeldebildschirm</h3>
</div>
<!--Anzeigefehler in rot.-->
<%for(String er : error){ %>
<div class="row justify-content-center">
<p style="color:red"><%=er %></p>
</div>
<%} %>
<div class="row justify-content-center">
<!-- login-Geben Sie die Servlet- und Eingabedaten an (Benutzer_id,Passwort)-->
<form action="login-servlet" method="post">
<div class="form-group">
<label>Benutzeridentifikation</label>
<input type="text" name="user_id" class="form-control" placeholder="User-ID">
</div>
<div class="form-group">
<label>Passwort</label>
<input type="password" name="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
<small class="form-text text-muted">We'll never share your Password with anyone else.</small>
</div>
<button type="submit" class="btn btn-outline-info">Einloggen</button>
</form>
</div>
</div>
Wir werden Methoden in DAO definieren, um das Servlet sauberer zu machen und später leichter zu ändern.
model.dao.UserDAO.java
/**
*Diese Methode wird verwendet, um alle Benutzerinformationen aus der eingegebenen Benutzer-ID abzurufen.
*Methode zum Abrufen von Benutzerinformationen mit der Benutzer-ID als Argument
* @param user_id
* @Benutzerinformationen zurückgeben
* @throws SQLException
* @throws ClassNotFoundException
*/
public UserBean getUser(String user_id) throws SQLException, ClassNotFoundException {
UserBean user = new UserBean();
//SQL-Anweisungsbenutzer_Holen Sie sich den Datensatz, indem Sie die ID angeben
String sql = "select * from m_user where user_id = ?";
//Verbindung zur Datenbank herstellen
try(Connection con = ConnectionManager.getConnection();
PreparedStatement pstmt = con.prepareStatement(sql)){
//Benutzer empfangen_Weisen Sie der SQL-Anweisung eine ID zu
pstmt.setString(1, user_id);
//Führen Sie die SQL-Anweisung aus und erhalten Sie das Ausführungsergebnis
ResultSet res = pstmt.executeQuery();
while(res.next()) {
//Ruft den Wert jeder Spalte aus dem Ausführungsergebnis ab
String password = res.getString("password");
String user_name = res.getString("user_name");
//Auf Benutzerobjekt setzen
user.setPassword(password);
user.setUser_id(user_id);
user.setUser_name(user_name);
}
return user;
}
}
/**
*Methode zum Abrufen des Benutzernamens mit der Benutzer-ID als Argument
* @param user_id
* @Benutzername zurückgeben
* @throws SQLException
* @throws ClassNotFoundException
*/
public String getUserName(String user_id) throws SQLException, ClassNotFoundException {
//SQL-Anweisung Benutzer_Benutzer von ID_Name holen
String sql = "select user_name from m_user where user_id = ?";
//usre_Legen Sie den Anfangswert von name fest
String user_name ="Unbekannt";
//Verbindung zur Datenbank herstellen
try(Connection con = ConnectionManager.getConnection();
PreparedStatement pstmt = con.prepareStatement(sql)){
//Benutzer empfangen_Weisen Sie der SQL-Anweisung eine ID zu
pstmt.setString(1, user_id);
//Führen Sie die SQL-Anweisung aus und erhalten Sie das Ausführungsergebnis
ResultSet res = pstmt.executeQuery();
while(res.next()) {
//Ruft den Wert jeder Spalte aus dem Ausführungsergebnis ab
user_name = res.getNString("user_name");
}
}
return user_name;
}
/**
*Methode zur Anmeldeauthentifizierung
* @param user_id
* @param password
* @Wenn der boolesche Rückgabetyp true ist, können Sie sich anmelden. Wenn false, können Sie sich nicht anmelden.
* @throws SQLException
* @throws ClassNotFoundException
*/
public boolean logincheck(String user_id, String password) throws SQLException, ClassNotFoundException {
//Schließen Sie den Fall aus, in dem das Eingabefeld zunächst leer ist
if (user_id == null || user_id.length() == 0 || password == null || password.length() == 0){
return false;
}
//SQL-Anweisung eingegebener Benutzer_id,Holen Sie sich den Datensatz, indem Sie das Passwort angeben
String sql = "select * from m_user where user_id = ? && password = ?";
//Verbindung zur Datenbank herstellen
try (Connection con = ConnectionManager.getConnection();
PreparedStatement pstmt = con.prepareStatement(sql)){
pstmt.setString(1, user_id);
pstmt.setString(2, password);
ResultSet res = pstmt.executeQuery();
//Wenn es ein Ausführungsergebnis der SQL-Anweisung gibt, ist es wahr, weil der Benutzer existiert. Kein Ergebnis bedeutet falsch, da der Benutzer nicht registriert ist
if(res.next()) {
return true;
} else {
return false;
}
}
}
Wir werden ein Servlet mit der von DAO erstellten Methode erstellen.
Servlet.Login.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//Anforderungsparameter empfangen
request.setCharacterEncoding("UTF-8");
String user_id = request.getParameter("user_id");
String password = request.getParameter("password");
//DAO-Objekterzeugung
UserDAO userdao = new UserDAO();
//Session Scope-Generierung
HttpSession session = request.getSession();
try {
boolean logincheck = userdao.logincheck(user_id, password);
if(logincheck) {
//-----------Verarbeitung bei korrekter Eingabe---------------------------------------------------
//Setzen Sie den Anmeldestatus auf den Sitzungsbereich
session.setAttribute("login", true);
//Holen Sie sich den Benutzernamen und die Informationen für die Anmeldung und stellen Sie den Sitzungsbereich ein
String current_user_name = userdao.getUserName(user_id);
UserBean current_user = userdao.getUser(user_id);
session.setAttribute("current_user_name", current_user_name);
session.setAttribute("current_user", current_user);
session.setAttribute("current_user_id", user_id);
//Zur Menüsitzung übertragen
RequestDispatcher rd = request.getRequestDispatcher("menu-servlet");
rd.forward(request, response);
} else {
//--------Verarbeitung, wenn die Eingabe unterschiedlich ist-----------------------------------------------------------
//Leerzeichen ankreuzen
List<String> error = new ArrayList<String>();
if(password.equals("")) {
error.add("Das Passwort ist leer");
}
if(user_id.equals("")) {
error.add("Benutzer-ID ist leer");
}
error.add("Es liegt ein Fehler in der Benutzer-ID oder im Kennwort vor");
request.setAttribute("error", error);
//Anmeldestatus auf Sitzungsbereich setzen (Authentifizierung nicht möglich)
session.setAttribute("login", false);
//Zum Anmeldebildschirm übertragen
RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
rd.forward(request, response);
}
//---------Andere Fehler wie SQL--------------------------------------------------------------
}catch(SQLException | ClassNotFoundException e) {
e.printStackTrace();
RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
rd.forward(request, response);
}
}
Dieses Mal habe ich versucht, die Anmeldefunktion zu implementieren. Nächstes Mal werden wir die Aufgabenregistrierungsfunktion implementieren.
Recommended Posts