Bonjour,

Débutant en Java et JSP, je suis en train de développer une première application que compte d'une page de login (identifiant et mot de passe), qui permets aussi de faire la création d'un nouveau compte. J'ai donc la structure ci-dessous:

ma page de login:
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
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html 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:p="http://primefaces.org/ui">
 
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Outils de Gestion</title>
<link href="resources/login-styles.css" media="all" rel="stylesheet" type="text/css" />
</h:head> 
<h:body styleClass="fond">
	<f:view>
		<h:form>
			<p:growl id="loginError" showDetail="true" sticky="true" />
 
				<p:commandLink action="#{collaborateurBean.newUser}" value="Première connexion ?" ajax="false" />  
	    		<p:outputLabel value="   " />
	    		<p:commandLink action="#{collaborateurBean.lostPassword}"  value="Mot de passe oublié ?" ajax="false" />  
 
 
 
				<h:outputLabel value="Identifiant :" /> 
		        <p:inputText id="txtMec" value="#{collaborateurBean.mec}" />  
		        <h:outputLabel value="Mot de passe :" />  
		        <p:password id="txtMdp" value="#{collaborateurBean.mdp}" /> 
		        <h:outputLabel value="" /> 
		        <h:commandButton action="#{collaborateurBean.verifierMdp}" value="Connexion" styleClass="btnConnexion" update="loginError" />
 
		</h:form>
	</f:view>
</h:body>
</html>

Mon Bean Managé:
Code : 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
package app;
 
@ManagedBean
@SessionScoped
public class CollaborateurBean {
	private String mec;
	private String mdp;
	private String nom;
 
	...
 
	protected ServletContext getServletContext() {
		ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
		return servletContext;
	}
 
	public String newUser(){
		return "newuser";
	}
 
	public String lostPassword(){
		return "lostpassword";
	}
 
	public String verifierMdp() throws NoSuchAlgorithmException, SQLException{
		ServletContext application = getServletContext();
		CollaborateurDAO dao = (CollaborateurDAO) application.getAttribute("CollaborateurDAO");
		Collaborateur collab= new Collaborateur(mec);
		String ok = "mdpFalse";
		if (dao.verifierMdp(collab, mdp)==true){
			ServletContext session = getServletContext();
			session.setAttribute("MEC", collab.getMec());
			trouverNom();
			ok = "mdpTrue";
		}else{
			FacesContext context = FacesContext.getCurrentInstance();  
	        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Login", "Identifiant et/ou Mot de passe erroné(s)")); 
		}
		return ok;
	}
 
	public String enregistrerMdp() throws SQLException, NoSuchAlgorithmException, ServletException, IOException{
		ServletContext application = getServletContext();
		CollaborateurDAO dao = (CollaborateurDAO) application.getAttribute("CollaborateurDAO");
		Collaborateur collab= new Collaborateur(mec);
 
		String enregistre = "enregistreFalse";
		if (dao.enregistrerMdp(collab, mdp)==true){
			enregistre = "enregistreTrue";
			MailDAO mail = (MailDAO) application.getAttribute("MailDAO");
			mail.sendMessage(mec, "Votre nouveau mot de passe", "Votre mot de passe dans les Outils de Gestion est " + mdp);
			//((HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true)).invalidate();
 
		}else{
			FacesContext context = FacesContext.getCurrentInstance();  
	        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Password save", "Il y a eu un erreur lors de l'enregistrement de votre mot de passe")); 
		}
		logoff();
		return enregistre;
	}
 
	...
	...
 
	public String logoff(){
		String logoff="true";
		mec="";
		mdp="";
		nom="";
 
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
		return logoff;
	}
}
et mon fichier faces-config:
Code xml : 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
<?xml version="1.0" encoding="UTF-8"?>
 
<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd"
    version="2.1">
	<navigation-rule>
		<from-view-id>/login.xhtml</from-view-id>
		<navigation-case>
			<from-outcome>mdpTrue</from-outcome>
			<to-view-id>/welcome.xhtml</to-view-id>
		</navigation-case>
		<navigation-case>
			<from-outcome>newuser</from-outcome>
			<to-view-id>/newuser.xhtml</to-view-id>
		</navigation-case>
		<navigation-case>
			<from-outcome>lostpassword</from-outcome>
			<to-view-id>/lostpassword.xhtml</to-view-id>
		</navigation-case>
	</navigation-rule>
 
	<navigation-rule>
		<from-view-id>/newuser.xhtml</from-view-id>
		<navigation-case>
			<from-outcome>enregistreTrue</from-outcome>
			<to-view-id>/index.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>
 
	<navigation-rule>
		<from-view-id>/welcome.xhtml</from-view-id>
		<navigation-case>
			<from-outcome>true</from-outcome>
			<to-view-id>/index.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>
</faces-config>

page pour créer un nouveau compte:
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
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html 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:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Outils de Gestion - Nouveau utilisateur</title>
<link href="resources/mdp-styles.css" media="all" rel="stylesheet" type="text/css" />
</h:head> 
<h:body styleClass="fond">
	<f:view>
		<h:form>
			<p:growl id="mdpError" showDetail="true" sticky="true" />
				<h:outputLabel value="Identifiant :" /> 
		        <p:inputText id="txtMec" label="Identifiant" value="#{collaborateurBean.mec}" required="true" />  
		  		<p:message for="txtMec" /> 
		        <h:outputLabel for="pwd1" value="Mot de passe :" />  
		        <p:password id="pwd1" label="Mot de passe 1" value="#{collaborateurBean.mdp}" match="pwd2" required="true"/>  
		  		<p:message for="pwd1" /> 
		        <h:outputLabel for="pwd2" value="Confirmer mot de passe :" />  
		        <p:password id="pwd2" label="Mot de passe 2" required="true"/>  
		        <p:message for="pwd2" display="icon" /> 
		        <h:outputLabel value="" /> 
		        <p:commandButton id="saveButton" action="#{collaborateurBean.enregistrerMdp}" update="mdpError,matchGrid" value="Enregistrer" styleClass="center" /> 
		        <h:outputLabel value="" /> 
		</h:form>
	</f:view>
</h:body>
</html>

Mon problème arrive lors des redirections qui je fais lors de la création d'un nouveau compte ou d'un logoff: lors que je fais la redirection vers la page "index.jsp", le navigateur va directement à la page "welcome.xhtml". Les deux processus ce font dans le CollaborateurBean, avec les méthodes verifierMdp et enregistrerMdp...

J'espère ne pas avoir été trop long, mais je n'arrive pas à comprendre pourquoi l'application ne s'arrete pas à la page "login.xhtml"

OBS: la page index.jsp ne fait qu'une redirection vers la page "login.xhtml":
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
<jsp:forward page="/faces/login.xhtml"></jsp:forward>

Merci d'avance pour vos réponses...
Marc