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