Bonjour,
Je dois développer une application web en Java EE avec un serveur Payara (en local). Cependant, je poste ce sujet de manière désespéré car je ne trouve vraiment pas de solution sur Internet, je m'en remets donc à vous.
Mon problème est donc que je ne comprends pas comment le code en Java EE va communiquer avec le xHtml. Pour que cela soit le plus compréhensible possible je vais vous illustrer un exemple que j'aimerai pouvoir intégrer dans mon application.
Lorsqu'un utilisateur tente de se connecter via le formulaire de connexion et que celui-ci entre un mauvais encodage pour le mot de passe ou nom d'utilisateur, une alerte s'affichera donc à l'écran, cependant comment la méthode en Java EE va renvoyer cette alerte (en xHtml ?) pour l'afficher à l'écran.
Voici mon code xHtml de connexion :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 <!DOCTYPE html> <html lang="fr" xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:b="http://bootsfaces.net/ui"> <h:head> <meta charset="UTF-8" /> <title>Connexion</title> <link rel="shortcut icon" href="images/login.png"/> </h:head> <h:body> <div class="container" style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);"> <b:jumbotron> <b:panel id="pan"> <h:form id="test"> <h1>Connexion</h1> <div class="form-group"> <h:outputLabel for="utilisateur">Nom d'utilisateur :</h:outputLabel> <b:inputText type="text" styleClass="form-control" id="uti" onchange="javascript:alert('after the AJAX call');" value="#{utilisateurController.utilisateur.nom}" required="true" requiredMessage="Entrer un nom d'utilisateur"/> <b:message for="uti"></b:message> </div> <div class="form-group"> <h:outputLabel for="mdp">Mot de passe :</h:outputLabel> <b:inputSecret type="password" styleClass="form-control" id="mdp" value="#{utilisateurController.utilisateur.motDePasse}" required="true" requiredMessage="Entrer un mot de passe"/> <b:message for="mdp"></b:message> </div> <b:commandButton styleClass="btn btn-success" value="Se connecter" action="#{utilisateurController.seConnecter(utilisateurController.utilisateur.nom, utilisateurController.utilisateur.motDePasse)}" /> <b:focus target="@previous" /> </h:form> </b:panel> </b:jumbotron> </div> </h:body> </html>
Et voici mon code Java EE (le controller) :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90 @Named @ViewScoped public class UtilisateurController implements Serializable { /** * */ private static boolean checkLog = false; private boolean alerte = false; private static final long serialVersionUID = 1L; @EJB private GestionUtilisateurEJB gestionUtilisateur; private List<Utilisateur> utilisateurs; private Utilisateur utilisateur; private Utilisateur tmp; public UtilisateurController() { } @PostConstruct public void init() { utilisateur = new Utilisateur(); utilisateurs = new ArrayList<>(); } public String seConnecter(String nomUtil, String mdpUtil) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance("SHA-256"); md.update(mdpUtil.getBytes()); byte byteData[] = md.digest(); //convertir le tableau de bits en une format hexadécimal - méthode 1 StringBuffer sb = new StringBuffer(); for (int i = 0; i < byteData.length; i++) { sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1)); } boolean ok = gestionUtilisateur.verifUtilisateur(nomUtil, sb.toString()); if(ok) { utilisateur = gestionUtilisateur.getUtilisateur(nomUtil, sb.toString()); alerte = false; checkLog = true; return "index.xhtml?face-redirect=true"; } alerte = true; return null; } public void addUtilisateur() { try { gestionUtilisateur.addUtilisateur(utilisateur); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public Utilisateur getUtilisateur(Utilisateur u) { return gestionUtilisateur.getUtilisateur(u); } public String deconnexion() { utilisateur.setNom(""); utilisateur.setMotDePasse(""); utilisateur.setPermission(""); checkLog = false; return "Connexion.xhtml?faces-redirect=true"; } public boolean checkAdmin() { if(utilisateur.getPermission().equals("ADMIN")) { return true; } return false; } public String checkLogin() { if(checkLog == false) { return "Connexion.xhtml?faces-redirect=true"; } return null; } }
J'espère que ce post ne dérangera pas vu la demande :/
Merci d'avance
ps : j'utilise BootsFaces.
Partager