IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Deconnexion d'une application Struts


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 58
    Par défaut Deconnexion d'une application Struts
    Salut,
    j'ai fait une application struts (plusieurs pages jsp). et maintenant je souhaite ajouter un lien hypertexte par exemple pour se deconnecter de l'application.
    je n'ai aucune idee.

    j'ai trouvé ce bout de code sur le net mais je n'arrive pas à le faire marcher.

    j'ai ajouté ce bout de code dans toutes mes pages
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <tr>
          <td height="10">&nbsp;</td>
           <td><div> <html:link action="/deconnexion">Logout</html:link>
    </tr>
    dans mon fichier struts-config
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <action
         path="/deconnexion"
         parameter="/vues/deconnexion.jsp"
         type="Deconnexion.FormulaireAction"
     >
        <forward name="formulaire" path="/formulaire.do"/>
    </action>
    et j'ai cree un packetage et j'ai mis ca dedans
    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
     
    package Deconnexion;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
    public class DeconnexionAction extends Action {
    		public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response) {
    		 try{
     
    			  HttpSession session = request.getSession(false);
    			  if(session!=null) {
    				  session.invalidate();
    				  } 
     
    		  	  }catch(Exception e){
    		  		String strError=e.getMessage();
    				System.out.println("Error is: " + strError);
    		  	  }
     
    		  	return mapping.findForward("formulaire");
    		   }
    	}

  2. #2
    Membre confirmé Avatar de badoress
    Inscrit en
    Mars 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2007
    Messages : 169
    Par défaut
    est ce qu'il te sort un message d'erreur ou rin ne se passe??
    verifie bien ton attribut type dans la balise action
    d'après ce que tu as posté je pense que tu dois mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <action
         path="/deconnexion"
         parameter="/vues/deconnexion.jsp"
         type="Deconnexion.DeconnexionAction"
     >
        <forward name="formulaire" path="/formulaire.do"/>
    </action>
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <action
         path="/deconnexion"
         parameter="/vues/deconnexion.jsp"
         type="Deconnexion.FormulaireAction"
     >
        <forward name="formulaire" path="/formulaire.do"/>
    </action>

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 58
    Par défaut
    Bonjour, quand je clique sur le lien logout, ca m'envoie vers une page vierge et non pas vers la page que j'ai indiqué dans mon DeconnexionAction.
    et c'est toujours possible de revenir en arriere avec le bouton precedent.
    Pour l'erreur que tu m'as corrigé, c'etait juste une faute du au copier coller. mon code etait correcte.

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 58
    Par défaut
    j'ai reussi a resoudre une partie du probleme, quand je clique sur logout, il me redirige bien vers la page d'accueil. mais on peut toujours revenir en arriere ou taper le lien directement dans l'url. Comment faire pour resoudre ce nouveau probleme.
    Merci

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Par défaut
    Bonjour,

    Pour éviter que l'on retourne en arrière une fois la session invalidée, tu pourrais peut-être utiliser un controller struts, qui permet l'éxécution d'un bout de code avant l'éxecution d'une quelconque action. Ce code éxecuté permet , si la session est terminée, de rediriger par exemple vers une page d'erreur ou de login :

    http://java.developpez.com/faq/strut...processorcheck



  6. #6
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 237
    Par défaut
    sinon, il faut tester en haut de chacune de tes pages la validité de la session.
    si la session est nulle, tu rediriges vers la page de login.

    par contre, je ne suis pas sûr que ça suffira pour le back via le navigateur car il se peut qu'il aille chercher la page dans le cache du navigateur.
    Dans ce cas, il faut faire un no-cache en entête de page pour éviter que les pages soient mises en cache pas le navigateur.

  7. #7
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    Intéressant comme solution. Est ce que c'est dans la page JSP qu'on vérifie si la session est valide ? Si oui c'est quoi la fonction qu'on appelle.
    Merci

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 237
    Par défaut
    oui en début de chaque page jsp.
    la focntion : à toi de la définir mais ça sera comme ça :
    <%
    session = request.getSession();
    if(session == null){
    %>
    <jsp:forward="pagelogin.jsp">
    <%
    }
    %>

  9. #9
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    Bonjour,
    Si j'ai bien compris. en haut de chaque page jsp, on va ajouter une fonction qui redirige vers la page login dans le cas ou la session est invalide.
    Faut il faire un traitement en plus dans la page login. puisque ma page login c'est juste un formulaire avec deux champs et un bouton.

    le FormulaireBean
    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
     
    public class FormulaireBean extends ActionForm {
    	// login
    	private String login = null;
     
    	public String getLogin() {
    		return login;
    	}
     
    	public void setLogin(String login) {
    		this.login = login;
    	}
     
    	// age
    	private String password = null;
     
    	public String getPassword() {
    		return password;
    	}
     
    	public void setPassword(String password) {
    		this.password = password;
    	}
     
    	// validation
    	public ActionErrors validate(ActionMapping mapping,
    			HttpServletRequest request) {
    		// gestion des erreurs
    		ActionErrors erreurs = new ActionErrors();
    		ici je fais mes tests .....
    le code du FormulaireAction
    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
     
    public class FormulaireAction extends Action {
     
    	public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response)
    			throws IOException, ServletException, HibernateException {
    		// on a un formulaire valide, sinon on ne serait pas arrivé là
    		FormulaireBean formulaire = (FormulaireBean) form;
     
    		request.setAttribute("login", formulaire.getLogin());
    		request.setAttribute("password", formulaire.getPassword());		
    		String login = formulaire.getLogin();
    		String password = formulaire.getPassword();
     
    		FacadeGestionUtilisateur u = new FacadeGestionUtilisateur();
    		String test;
    		test=u.niveauUtilisateur(login,password);
     
    		if ( ici il ya un test ) {
    			return mapping.findForward("utilisateur");				
    		} 
                   else {
    			return mapping.findForward("candidat");	
    		}
    cela suffit il? ou faut il que j'ajoute du code pour dire que la session est valide. Comment faire?

  10. #10
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Bonjour, la solution technique a été donnée par contre je ne te conseille pas de la mettre dans les JSP mais plus d'utiliser correctement les concepts MVC.

    Ne jamais accéder directement à une JSP mais passer toujours par une action, tu peux donc mettre ton controle dans l'action en question (cela sera moins verbeux pour tes jsp).
    Et pour aller encore plus loin, tu peux utiliser un système de Filter. Fais une recherche sur le forum tu devrais trouver ton bonheur.

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/05/2007, 21h37
  2. Problème de filtre pour une application struts.
    Par mazizou dans le forum Struts 1
    Réponses: 5
    Dernier message: 31/03/2007, 16h54
  3. fermer une application struts
    Par zurich dans le forum Struts 1
    Réponses: 4
    Dernier message: 30/10/2006, 17h20
  4. installer une application struts sur le reseau
    Par zurich dans le forum Struts 1
    Réponses: 2
    Dernier message: 17/10/2006, 18h22
  5. Utilisation des fichiers CSS dans une application Struts
    Par menzlitsh dans le forum Struts 1
    Réponses: 4
    Dernier message: 22/09/2006, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo