Java / Twitter-Klon- / Aufgabenverwaltungssystem (2) Anmeldefunktion 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

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>

DAO erstellen

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;
			}
		}
	}

Servlet erstellen

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);
		}
	}

Vorschau beim nächsten Mal

Dieses Mal habe ich versucht, die Anmeldefunktion zu implementieren. Nächstes Mal werden wir die Aufgabenregistrierungsfunktion implementieren.

Recommended Posts

Java / Twitter-Klon- / Aufgabenverwaltungssystem (2) Anmeldefunktion hinzufügen
Java / Twitter-Klon- / Aufgabenverwaltungssystem ⑥ Löschfunktion hinzufügen
Java / Twitter-Klon- / Aufgabenverwaltungssystem ⑤ Bearbeitungsfunktion 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 (hinzufügen)
Anmeldefunktion