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

Spring Java Discussion :

Injection d'un sessionManager? [Framework]


Sujet :

Spring Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 24
    Points : 25
    Points
    25
    Par défaut Injection d'un sessionManager?
    Bonjour à tous

    j'ai une petite question qui me trotte dans l'esprit, sur une "façon de bien programmer" avec Spring.

    J'ai réalisé un formulaire de Login simple dans une petite appli web que je suis entrain de faire et dont j'ai parlé précedemment. J'ai modifié la méthode "handleRequest" de cet objet pour récupérer la session existante : en effet, je souhaite que si une personne ait été logguée, elle ne puisse plus accéder à ma page de login via l'URL mais soit redirigée vers une URL autre (la vue "hello" par exemple)

    Voici l'handleRequest de mon LoginFormController :
    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
     
    @Override
    	public ModelAndView handleRequest(HttpServletRequest arg0,
    			HttpServletResponse arg1) throws ServletException, IOException {
    		if(getSession()==null){
    			this.setSession(arg0.getSession());
    		}
    		User temp = (User)getSession().getAttribute("CurrentUser");
    		if (temp== null){
    			try {
    				return super.handleRequest(arg0, arg1);
    			} catch (Exception e) {
    				logger.error("Error during the handleRequest method of object LoginFormController");
    				logger.error("Error message : "+e.getMessage());
    				return null;
    			}
    		}else{
    			logger.info("User is already loggued in, redirecting to hello view");
    	        return new ModelAndView(new RedirectView("hello"));
    		}
    	}
    Comme vous pouvez le supposer via le "getSession()" que l'on y voit, j'ai ajouté un attribut "session" de type "HttpSession" dans ma classe. Or je récupère cette session lors de l'exécution.

    Avec l'injection de bean de Spring, je me demande maintenant que je commence a bien piger le principe, si au lieu de faire ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(getSession()==null){
    	this.setSession(arg0.getSession());
    }
    je ne ferais pas mieux de profiter de l'injection et de modifier mon bean loginformcontroller dans mon testlogin-serviette.xml comme suit?? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <bean name="/login" class="testlogin.web.LoginFormController">
    	<property name="sessionForm" value="true" />
    	<property name="commandName" value="login" />
    	<property name="commandClass" value="testlogin.service.Login" />
    	<property name="validator">
    		<bean class="testlogin.service.LoginValidator" p:userManager-ref="userManager"></bean>
    	<property name="session">
    		<bean class="?????" p:????????="????????"></bean>
    	</property>
    	<property name="formView" value="login" />
    	<property name="successView" value="hello" />
    	<property name="userManager" ref="userManager" />
    </bean>
    où les "????????" sont les "gestionnaires de session" de Spring, mais comme je connais pas leurs noms...

    Je présume que je dois utiliser le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    mais comme j'en sais strictement rien pour le moment, ben je préfère poser la question (il y a peut-être un autre "sessionManager" dont j'ignore l'existence pour le moment?)

    J'espère avoir été clair dans mes explications merci d'avance de l'aide que vous pourriez m'apporter

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 24
    Points : 25
    Points
    25
    Par défaut
    Je précise un peu ma pensée car je suis tombé plusieurs fois sur une erreur de session invalidée apres inactivité de ma session sur le serveur Tomcat.

    Lorsque je veux naviguer dans mon application, j'ai droit a une exception de session invalidée...

    Pile d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: "getAttribute": Session déjà invalidée
    	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:488)
    	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    lorsque j'utilise le session.getAttribute("attribut"); dans mon code...

    comment redémarrer une session? comment faire en sorte qu'après inactivité, elle soit relancée et non "juste" invalidée?

    EDIT :

    réponse : request.getSession(true) au lieu de request.getSession()... Si la session n'existe plus, une nouvelle est créée... je me boulettise ces derniers temps

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/02/2006, 11h34
  2. Récupération liste de fichier pour qmail-inject
    Par segphault dans le forum Linux
    Réponses: 1
    Dernier message: 07/02/2006, 12h01
  3. Réponses: 20
    Dernier message: 03/02/2006, 10h55
  4. [VB.NET] fonction qui injecte du html dans une zone précise
    Par denisvignes dans le forum ASP.NET
    Réponses: 5
    Dernier message: 27/10/2005, 09h33
  5. Réponses: 10
    Dernier message: 25/10/2005, 16h09

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