Système de gestion des tâches / clone Java / Twitter (2) Ajouter une fonction de connexion

introduction

Je voudrais écrire un article pour ceux qui écrivent des applications pour la première fois en utilisant Java. Nous vous serions reconnaissants de bien vouloir l'utiliser comme référence pour créer des thèmes de formation pour votre portefeuille et votre entreprise. Cette fois, nous allons créer un gestionnaire de tâches. En appliquant cela, il peut également être utilisé pour créer des clones Twitter.

Je publierai des articles pour chaque fonction de l'application.

  1. Créer une base de données
  2. Fonction de connexion
  3. Fonction d'enregistrement des tâches
  4. Affichage de la liste -Fonction de tri -Fonction de recherche
  5. Fonction d'édition
  6. Fonction de suppression
  7. Contrôle exclusif

Environnement d'exécution

eclipse4.16.0 Tomcat9 Java11

table des matières

  1. Créer une vue
  2. Créez DAO
  3. Création d'un servlet
  4. Prochain avis

Créer une vue

login.jsp


<body>
<!--S'il y a une erreur de saisie, cette page sera rouverte afin que nous vous fassions savoir pourquoi l'erreur s'est produite. Recevoir la valeur de l'erreur de nom de données d'étendue de demande-->
<%
List<String> error = (List<String>)request.getAttribute("error");
%>
	<div class="container mt-5">
		<div class="row justify-content-center">
			<h3>Écran de connexion</h3>
		</div>
<!--Afficher l'erreur en rouge.-->
		<%for(String er : error){ %>
		<div class="row justify-content-center">
			<p style="color:red"><%=er %></p>
		</div>
		<%} %>
		<div class="row justify-content-center">
<!-- login-Spécifiez le servlet et les données d'entrée (utilisateur_id,mot de passe)-->
			<form action="login-servlet" method="post">
	  			<div class="form-group">
	    			<label>Identifiant d'utilisateur</label>
	    			<input type="text" name="user_id" class="form-control" placeholder="User-ID">
	  			</div>
	  			<div class="form-group">
	    			<label>mot de passe</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">S'identifier</button>
			</form>
		</div>
	</div>

Créer un DAO

Nous définirons des méthodes dans DAO pour rendre le servlet plus propre et plus facile à changer plus tard.

model.dao.UserDAO.java


	/**
         *Cette méthode est utilisée pour obtenir toutes les informations utilisateur à partir de l'ID utilisateur saisi.
	 *Méthode pour obtenir des informations utilisateur avec l'ID utilisateur comme argument
	 * @param user_id
	 * @retour des informations utilisateur
	 * @throws SQLException
	 * @throws ClassNotFoundException
	 */
	public UserBean getUser(String user_id) throws SQLException, ClassNotFoundException {
		UserBean user = new UserBean();
//Utilisateur de l'instruction SQL_Obtenir un enregistrement en spécifiant un identifiant
		String sql = "select * from m_user where user_id = ?";
//Se connecter à la base de données
		try(Connection con = ConnectionManager.getConnection();
				PreparedStatement pstmt = con.prepareStatement(sql)){
//Utilisateur reçu_Attribuer un identifiant à l'instruction SQL
			pstmt.setString(1, user_id);
//Exécuter une instruction SQL et obtenir le résultat de l'exécution
			ResultSet res = pstmt.executeQuery();
			while(res.next()) {
//Obtenez la valeur de chaque colonne à partir du résultat de l'exécution
				String password = res.getString("password");
				String user_name = res.getString("user_name");
//Définir sur objet utilisateur
				user.setPassword(password);
				user.setUser_id(user_id);
				user.setUser_name(user_name);
			}
			return user;
		}
	}

	/**
	 *Méthode pour obtenir le nom d'utilisateur avec l'ID utilisateur comme argument
	 * @param user_id
	 * @retourner le nom d'utilisateur
	 * @throws SQLException
	 * @throws ClassNotFoundException
	 */
	public String getUserName(String user_id) throws SQLException, ClassNotFoundException {
//Utilisateur de l'instruction SQL_utilisateur de l'identifiant_Obtenir le nom
		String sql = "select user_name from m_user where user_id = ?";
//usre_Définir la valeur initiale du nom
		String user_name ="inconnue";
//Se connecter à la base de données
		try(Connection con = ConnectionManager.getConnection();
				PreparedStatement pstmt = con.prepareStatement(sql)){
//Utilisateur reçu_Attribuer un identifiant à l'instruction SQL
			pstmt.setString(1, user_id);
//Exécuter une instruction SQL et obtenir le résultat de l'exécution
			ResultSet res = pstmt.executeQuery();

			while(res.next()) {
//Obtenez la valeur de chaque colonne à partir du résultat de l'exécution
				user_name = res.getNString("user_name");
			}
		}
		return user_name;
	}


		/**
		 *Méthode d'authentification de connexion
		 * @param user_id
		 * @param password
		 * @Si le type booléen renvoyé est vrai, vous pouvez vous connecter. S'il est faux, vous ne pouvez pas vous connecter.
		 * @throws SQLException
		 * @throws ClassNotFoundException
		 */
	public boolean logincheck(String user_id, String password) throws SQLException, ClassNotFoundException {
//Excluez le cas où le champ de saisie est vide en premier lieu
		if (user_id == null || user_id.length() == 0 || password == null || password.length() == 0){
	      return false;
	    }
//Instruction SQL entrée utilisateur_id,Obtenir l'enregistrement en spécifiant le mot de passe
		String sql = "select * from m_user where user_id = ? && password = ?";
//Se connecter à la base de données
		try (Connection con = ConnectionManager.getConnection();
				PreparedStatement pstmt = con.prepareStatement(sql)){
			pstmt.setString(1, user_id);
			pstmt.setString(2, password);
			ResultSet res = pstmt.executeQuery();
//S'il y a un résultat d'exécution de l'instruction SQL, c'est vrai car l'utilisateur existe. Aucun résultat signifie faux car l'utilisateur n'est pas enregistré
			if(res.next()) {
				return true;
			} else {
				return false;
			}
		}
	}

Créer un servlet

Nous allons créer un servlet en utilisant la méthode créée par DAO.

Servlet.Login.java


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

		//Réception des paramètres de demande
		request.setCharacterEncoding("UTF-8");
		String user_id = request.getParameter("user_id");
		String password = request.getParameter("password");


		//Génération d'objets DAO
		UserDAO userdao = new UserDAO();

		//génération de portée de session
		HttpSession session = request.getSession();

		try {
			boolean logincheck = userdao.logincheck(user_id, password);

			if(logincheck) {
				//-----------Traitement lorsque l'entrée est correcte---------------------------------------------------

				//Définir l'état de connexion sur l'étendue de la session
				session.setAttribute("login", true);

				//Obtenez le nom d'utilisateur et les informations de connexion et définissez l'étendue de la session
				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);

				//Transfert à la session de menu
				RequestDispatcher rd = request.getRequestDispatcher("menu-servlet");
				rd.forward(request, response);

			} else {
				//--------Traitement lorsque l'entrée est différente-----------------------------------------------------------
				//Cochez en blanc
				List<String> error = new ArrayList<String>();
				if(password.equals("")) {
					error.add("Le mot de passe est vide");
				}
				if(user_id.equals("")) {
					error.add("L'ID utilisateur est vide");
				}
				error.add("Il y a une erreur dans l'ID utilisateur ou le mot de passe");
				request.setAttribute("error", error);

				//Définir l'état de connexion sur l'étendue de la session (authentification impossible)
				session.setAttribute("login", false);

				//Transférer à l'écran de connexion
				RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
				rd.forward(request, response);
			}
			//---------Autres erreurs telles que SQL--------------------------------------------------------------
		}catch(SQLException | ClassNotFoundException e) {
			e.printStackTrace();
			RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
			rd.forward(request, response);
		}
	}

Aperçu de la prochaine fois

Cette fois, j'ai essayé d'implémenter la fonction de connexion. La prochaine fois, nous mettrons en œuvre la fonction d'enregistrement des tâches.

Recommended Posts

Système de gestion des tâches / clone Java / Twitter (2) Ajouter une fonction de connexion
Système de gestion de clone / tâches Java / Twitter ⑥ Ajouter une fonction de suppression
Système de gestion de clones / tâches Java / Twitter ⑤ Ajouter une fonction d'édition
Système de gestion de clones / tâches Java / Twitter ③ Ajout d'une fonction d'enregistrement de tâches
Clone Java / Twitter / système de gestion des tâches ④ Afficher la liste des tâches
Système de gestion des tâches / clones Java / Twitter ① Créer une base de données
Java (ajouter)
Fonction de connexion