J'ai le problème suivant, j'ai configuré la classe suivante qui devrait être stockée dans la session.Printemps MVC 3.0 accédant à la variable de session
<bean id="Users" class="com.doolloop.DlUser" scope="session">
<aop:scoped-proxy/>
</bean>
Alors je dans mon servlet Dispatcher je voudrais accéder à cet utilisateur de catégoriels et
@RequestMapping(value="/authenticate.do",method = RequestMethod.POST)
public String sampleAuthentication(@Valid Person person, BindingResult result,
Map model,HttpServletRequest request){
...... /some code
HttpSession session = request.getSession();
DlUser user = (DlUser) session.getAttribute("Users");
/// some uses for user object
}
Le problème est que je suis toujours obtenir null Valeur de l'objet utilisateur.
Qu'est-ce que je fais mal?
Deuxième problème, j'ai lu dans les articles que l'accès HttpSession
n'est pas thread-safe, comment peut-il être fait de manière sûre? Devrait être genre de Singleton? Pourquoi ce n'est pas une opération Thread Safe?
Merci d'avance.
Danny.
Cela signifie-t-il que ce bean existera la même période que la session Http existe? –
oui, c'est exact, mais lisez la réponse de Bozho. Si vous injectez ce haricot dans un haricot de plus longue durée, l'effet ne sera pas le même que prévu. Il vaut mieux utiliser session.getAttribute() pour obtenir l'objet, ou utiliser AOP pour faire un proxy pour l'objet de session - regardez l'exemple ici pour plus de détails: http://wheelersoftware.com/articles/spring-session-scoped -beans.html. Essentiellement, ce lien explique comment créer un proxy pour le bean de la portée de la session, donc le proxy est celui qui obtient la bonne instance de l'objet correspondant à ce qui est en session –