Créer une page de connexion pour une application web
ti_mouton
Messages postés
143
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Pour un projet je dois réaliser une application web en Java sous IDE ECLIPSE avec Driver Jdbc. La premiere étape est de permettre à l'utilisateur de se connecter, et pour moi c'est le flou total...
Dans ma couche DAL j'ai construit la classe UtilisateurDAOJdbcImpl :
Puis dans ma couche BLL j'ai créé une classe UtilisateurManager avec le code suivant :
Ensuite j'ai créé une Servlet :
Et enfin la JSP "login.jsp" pour afficher la page de connexion:
Quelqu'un peut il m'aider à reconstruire mon code, car comme je m'y attendais ça ne fonctionne pas du tout ...
Merci d'avance pour votre aide
Pour un projet je dois réaliser une application web en Java sous IDE ECLIPSE avec Driver Jdbc. La premiere étape est de permettre à l'utilisateur de se connecter, et pour moi c'est le flou total...
Dans ma couche DAL j'ai construit la classe UtilisateurDAOJdbcImpl :
public class UtilisateurDAOJdbcImpl implements UtilisateurDAO {
private static final String SQL_SELECT_LOGIN="select * from UTILISATEURS where pseudo=?, mot_de_passe=?";
public Utilisateur selectByLogin(String pseudo, String motDePasse) throws BusinessException {
Utilisateur profil = null;
try(Connection cnx = ConnectionProvider.getConnection()){
PreparedStatement pstmt = cnx.prepareStatement(SQL_SELECT_LOGIN);
pstmt.setString(1, pseudo);
pstmt.setString(2, motDePasse);
ResultSet rslt = pstmt.executeQuery();
if(rslt.next()) {
profil = map(rslt);
}
}catch (Exception e) {
e.printStackTrace();
BusinessException be = new BusinessException();
be.ajouterErreur(CodeResultatDAL.LECTURE_OBJET_ECHEC);
throw be;
}
if(profil==null) {
BusinessException be = new BusinessException();
be.ajouterErreur(CodeResultatDAL.ERREUR_LOGIN);
throw be;
}
return profil;
}
}
Puis dans ma couche BLL j'ai créé une classe UtilisateurManager avec le code suivant :
public class UtilisateurManager {
private UtilisateurDAO utilisateurDAO;
public UtilisateurManager(){
this.utilisateurDAO = DAOFactory.getUtilisateurDAO();
}
public Utilisateur seConnecter(String pseudo, String motDePasse) throws BusinessException {
if(pseudo!=null || motDePasse!=null) {
BusinessException be = new BusinessException();
be.ajouterErreur(CodeResultatBLL.SAISIE_LOGIN_MP_OBLIGATOIRE);
throw be;
}
if(utilisateurDAO.selectByLogin(pseudo, motDePasse)==null) {
BusinessException be = new BusinessException();
be.ajouterErreur(CodeResultatBLL.SAISIE_LOGIN_MP_UNKNOWN);
throw be;
}
return this.utilisateurDAO.selectByLogin(pseudo, motDePasse);
}
}
Ensuite j'ai créé une Servlet :
@WebServlet("/ServletConnexion")
public class ServletConnexion extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/login.jsp");
rd.forward(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String pseudo=null;
String motDePasse=null;
List<Integer> listeCodesErreurs = new ArrayList<>();
pseudo = request.getParameter("pseudo");
if(pseudo==null || pseudo.trim().isEmpty()) {
listeCodesErreurs.add(CodeResultatServlet.FORMAT_IDENTIFIANT_ERREUR);
}
motDePasse = request.getParameter("motDePasse");
if(motDePasse==null || motDePasse.trim().isEmpty()) {
listeCodesErreurs.add(CodeResultatServlet.FORMAT_MOT_DE_PASSE_ERREUR);
}
if(listeCodesErreurs.size()>0)
{
//Je renvoie les codes d'erreurs
request.setAttribute("listeCodesErreurs",listeCodesErreurs);
RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/login.jsp");
rd.forward(request, response);
}
else {
//j'affiche le profil
UtilisateurManager utilisateurManager = new UtilisateurManager();
try {
utilisateurManager.seConnecter(pseudo, motDePasse);
RequestDispatcher rd = request.getRequestDispatcher("/ServletListeEncheres");
rd.forward(request, response);
} catch(BusinessException be) {
be.printStackTrace();
request.setAttribute("listeCodesErreurs", be.getListeCodesErreur());
RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/login.jsp");
rd.forward(request,response);
}
}
}
}
Et enfin la JSP "login.jsp" pour afficher la page de connexion:
<title>Page de connexion</title>
</head>
<body>
<div class="col-sm-6 text-align:left">
<h1>ENI-Encheres</h1>
</div>
<div class="container col-sm-6 col-sm-offset-3">
<form action="fr.eni.javaee.projet_encheres.servlets/ServletConnexion" method="post">
<fieldset class="form-group">
<label for="pseudo">Identifiant </label>
<input type="text" name="identifiant" id="identifiant" size="30" maxlength="30" required="required" autofocus="autofocus" autocomplete="off">
</fieldset>
<fieldset class="form-group">
<label for="motDePasse">Mot de Passe</label>
<input type="password" name="motDePasse" id="motDePasse" size="30" maxlength="30" required="required" autocomplete="off">
</fieldset>
<fieldset class="form-group">
<input type="submit" value="Connexion">
</fieldset>
</form>
</div>
</body>
Quelqu'un peut il m'aider à reconstruire mon code, car comme je m'y attendais ça ne fonctionne pas du tout ...
Merci d'avance pour votre aide
A voir également:
- Créer une page de connexion pour une application web
- Gmail connexion - Guide
- Supprimer une page word - Guide
- Créer une page facebook - Guide
- Créer un lien pour partager des photos - Guide
- Créer une adresse hotmail - Guide
6 réponses
Bonjour,
Je n'ai pas de PC sous la main et il manque de toute façon trop de code que tu ne nous as pas transmis pour tester, mais est-ce que tu pourrais nous lister tous les fichiers (pas leur contenu) que tu as créé afin de voir dans quels dossiers ils sont.
Par exemple en utilisant la commande
Je n'ai pas de PC sous la main et il manque de toute façon trop de code que tu ne nous as pas transmis pour tester, mais est-ce que tu pourrais nous lister tous les fichiers (pas leur contenu) que tu as créé afin de voir dans quels dossiers ils sont.
Par exemple en utilisant la commande
jar tvf tonAppliWeb.war
Bonjour,
voici la liste des fichiers (je n'ai pas reussie à utiliser la commande).

merci
voici la liste des fichiers (je n'ai pas reussie à utiliser la commande).


merci
Déjà dans le META-INF tu ne devrais avoir pas avoir de fichier HTML ou CSS, ils devraient être dans WebContent avec jquery et bootstrap.
Est-ce que tu pourrais copier-coller le contenu des fichiers web.xml et contexte.xml
Après si tu pouvais expliquer le problème que tu as, si tu as des erreurs au démarrage par exemple, savoir lesquelles c'est.
De plus, est ce que tu es absolument contraint de faire un serveur à l'ancienne avec Eclipse ou est ce que tu as un peu de liberté ?
Vu ton code (JSP &co) je te conseillerai cette architecture : Exemple simple d'application JSTL, ça n'empêche pas bien sûr d'utiliser Eclipse et ton code ne changerai pas, mais l'exécution du serveur pour tester le programme sera grandement facilité.
Est-ce que tu pourrais copier-coller le contenu des fichiers web.xml et contexte.xml
Après si tu pouvais expliquer le problème que tu as, si tu as des erreurs au démarrage par exemple, savoir lesquelles c'est.
De plus, est ce que tu es absolument contraint de faire un serveur à l'ancienne avec Eclipse ou est ce que tu as un peu de liberté ?
Vu ton code (JSP &co) je te conseillerai cette architecture : Exemple simple d'application JSTL, ça n'empêche pas bien sûr d'utiliser Eclipse et ton code ne changerai pas, mais l'exécution du serveur pour tester le programme sera grandement facilité.
Ok j'ai modifié l'emplacement des fichiers.
Voici le code du fichier web.xml:
Et celui du fichier contexte.xml:
Quand je lance ma Servlet ma page web s'affiche, et quand j’inscris un pseudo et un mot de passe et que je clique sur connexion il me renvoi un page "404 Not Found servletconnexion indisponible"
Merci
Voici le code du fichier web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>ProjetEncheres</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
Et celui du fichier contexte.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Ressource
name ="jdbc/pool_cnx"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
type="java.sql.DataSource"
url="jdbc:sqlserver://localhost;databasename=PROJET_ENCHERES"
username="root"
password="root"
maxTotal="1000"
maxIdle="30"
maxWaitMillis="10000"
/>
</Context>
Quand je lance ma Servlet ma page web s'affiche, et quand j’inscris un pseudo et un mot de passe et que je clique sur connexion il me renvoi un page "404 Not Found servletconnexion indisponible"
Merci
Dans ta JSP cette ligne est incorrecte :
La classe que tu dois appeler doit être configurée dans le web.xml et c'est l'URL configurée que tu dois appeler dans le form :
<form action="fr.eni.javaee.projet_encheres.servlets/ServletConnexion" method="post">
La classe que tu dois appeler doit être configurée dans le web.xml et c'est l'URL configurée que tu dois appeler dans le form :
<servlet> <display-name>Connexion</display-name> <servlet-name>ConnexionServlet</servlet-name> <servlet-class>fr.eni.javaee.projet_encheres.servlets/ServletConnexion</servlet-class> </servlet> <servlet-mapping> <servlet-name>ConnexionServlet</servlet-name> <url-pattern>/connexion</url-pattern> </servlet-mapping>
<form action="connexion" method="post">
J'ai effectué les modifications, mais toujours le même code erreur "404 La ressource demandée [/connexion] n'est pas disponible"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ok j'ai modifié mais toujours la meme erreur
Je n'avais pas vu que tu utilisais les annotations @WebServlet donc on va partir là dessus.
Supprimes la servlet du fichier web.xml (au passage tu peux supprimer les welcome-file aussi)
Avec l'annotation
Supprimes la servlet du fichier web.xml (au passage tu peux supprimer les welcome-file aussi)
Avec l'annotation
@WebServlet("/ServletConnexion")c'est donc
<form action="ServletConnexion" method="post">qu'il faudrait indiquer.
ah enfin ça fonctionne ! Merci !
Enfin ca fonctionne... disons que je n'ai plus de page d'erreur, c'est déjà un bon début!
Par contre mon code pour établir la connexion doit avoir beaucoup d'erreurs car quand j'indique un pseudo et mp qui font pourtant bien partis de ma base de données il me réaffiche ma page de connexion...
Il faudrait que j'utilise un objet HttpSession, ainsi qu'un mot de passe de type "ecryptedPassword" mais honnetement je n'ai aucune idée de comment mettre ça en place dans mon Modèle DAO.
Des conseils ?
Merci beaucoup
Enfin ca fonctionne... disons que je n'ai plus de page d'erreur, c'est déjà un bon début!
Par contre mon code pour établir la connexion doit avoir beaucoup d'erreurs car quand j'indique un pseudo et mp qui font pourtant bien partis de ma base de données il me réaffiche ma page de connexion...
Il faudrait que j'utilise un objet HttpSession, ainsi qu'un mot de passe de type "ecryptedPassword" mais honnetement je n'ai aucune idée de comment mettre ça en place dans mon Modèle DAO.
Des conseils ?
Merci beaucoup
Si tu retournes sur la page de connexion c'est que tu rentres dans le
Dans le code d'exemple que j'ai cité tout à l'heure il y a une utilisation de HttpSession dans ResultAction.java tu devrais regarder comment c'est fait.
Quant à la sécurisation du mot de passe, tu peux regarder les MessageDigest, exemple ici : SHA-256 Hashing in Java
catch(BusinessException be)donc tu dois avoir la stack trace de l'exception qui s'affiche, ça permet de cerner le problème.
Dans le code d'exemple que j'ai cité tout à l'heure il y a une utilisation de HttpSession dans ResultAction.java tu devrais regarder comment c'est fait.
Quant à la sécurisation du mot de passe, tu peux regarder les MessageDigest, exemple ici : SHA-256 Hashing in Java