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 :

Obtenir l'instance courante HttpServletContext


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2003
    Messages : 12
    Par défaut Obtenir l'instance courante HttpServletContext
    Bonjour,

    Après de nombreuses tentatives, je ne parviens toujours pas à accéder à l'instance courante de HttpServletContext.

    Voici mon problème: je tente dans une application Web et dans des beans au scope request d'obtenir la session HTTP courrante ainsi que les paramètres de la requete HTTP courante. Or, j'ai vu qu'une instance de HttpServletContext me donne accès à ces informations. C'est donc pour ca que je privilégie cette classe. Mais, tout ce qui pourrait me faire accéder à la session et à la requête courante résoudrait mon problème.

    Merci beaucoup pour votre aide.

    Sébastien

  2. #2
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Par défaut
    Si tu parle de scope Spring, je supposte que tu as ceci un RequestContextListener ou un RequestContextFilter ?

    Si oui, tu peux tenter ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HttpServeltRequest = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2003
    Messages : 12
    Par défaut
    oui j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	<listener>
    		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    	</listener>
    et j'ai ce bean ci:
    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
     
    @Bean(name="localesManager")
    @Scope(WebApplicationContext.SCOPE_REQUEST)
    public class LocalesManagerBean {
    	@Autowired
    	private be.cyberplongeurs.system.spring.WebApplicationContext applicationContext;
     
    	public LocalesManagerBean() { 
    		Logger.getLogger( LocalesManagerBean.class ).debug("Constructor");
    	}
     
    	public void setApplicationContext(be.cyberplongeurs.system.spring.WebApplicationContext applicationContext) {
    		this.applicationContext = applicationContext;
    	}	
     
    	@PostConstruct
    	public void init()
    	{
    		Logger.getLogger( LocalesManagerBean.class ).debug("init()");
     
     
    		try {
    			HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
    			request.setAttribute(LocalesManagerBean.class.getName(), this);
    		} catch (Exception e) {
    			e.printStackTrace();
    			Logger.getLogger( LocalesManagerBean.class ).debug("Exception occured while initializing " + LocalesManagerBean.class + ": " + e + " Message: " + e.getMessage());
    		}
    	}
     
    	public List<Locale> getCurrentLocales()
    	{
    		Map<String, ILocaleResolver> resolvers = applicationContext.getBeansOfType( ILocaleResolver.class );
    		java.util.List<Locale> currentLocales = null;		
    		int currentPriority = Integer.MIN_VALUE;		
    		LocalesResolution currentResolution;
    		for(ILocaleResolver resolver : resolvers.values() )
    		{
    			currentResolution = resolver.getContextLocale();
     
    			if ( ( currentResolution != null ) && ( currentResolution.getPriority() > currentPriority ) )
    			{
    				currentLocales = currentResolution.getLocaleList();
    				currentPriority = currentResolution.getPriority();
     
    				Logger.getLogger( LocalesManagerBean.class ).debug("The result of " + resolver.getClass() + " is took into account (" + currentResolution + " with priority "+ currentPriority + ")");
    			}
    			else
    			{
    				Logger.getLogger( LocalesManagerBean.class ).debug("The result of " + resolver.getClass() + " won't be took into account (" + currentResolution + ")");
    			}
    		}		
    		return currentLocales;
    	}
     
    }
    Le problème est que le bean s'initialise avant même que je fasse une requete HTTP. Pourtant (me semble-t-il), les beans avec le scope request de spring sont initialisés à chaque nouvelle requete HTTP (et uniquement à ce moment là, non?).

    merci

Discussions similaires

  1. comment obtenir l'instance d'une classe
    Par JCD21 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 27/06/2008, 22h26
  2. Obtenir le mois courant en Latex
    Par gonadostimuline dans le forum Mise en forme
    Réponses: 0
    Dernier message: 11/12/2007, 18h30
  3. Réference à l'instance courante (this ?)
    Par horzy dans le forum VB.NET
    Réponses: 1
    Dernier message: 23/05/2007, 16h13
  4. Obtenir la couleur courante de la console
    Par spidermario dans le forum Windows
    Réponses: 2
    Dernier message: 14/05/2007, 13h57
  5. Obtenir l'année courante
    Par mask91 dans le forum C++
    Réponses: 1
    Dernier message: 01/03/2007, 15h01

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