Comment obtenir de Printemps WebContext dans la classe annotée @contrôleur
Dans Spring MVC avec l'annotation, nous marquons tout POJO avec @Contrôleur.
Dans ce contrôleur, nous pouvons obtenir WebApplicationContext, à l'aide de autocâblés propriété.
@Controller
public class HomePageController {
@Autowired
ApplicationContext act;
@RequestMapping("/*.html")
public String handleBasic(){
SimpleDomain sd = (SimpleDomain)act.getBean("sd1");
System.out.println(sd.getFirstProp());
return "hello";
}
Mais dans cette approche, nous n'avons pas de servletContext à portée de main avec nous. Donc, il y a moyen que nous pouvons toujours utiliser des anciennes façon de se WebApplicationContext ? c'est à dire
WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext)
Comment allons-nous obtenir servletContext ici ?
Je ne suis pas face à aucune contrainte d'utiliser de vieux; cette question est juste de la curiosité de vérifier la souplesse de printemps.
Il peut aussi être une question d'entrevue.
OriginalL'auteur Kaushik Lele | 2012-11-03
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement injecter dans votre contrôleur:
Ou de prendre HttpServletRequest en tant que paramètre et l'obtenir à partir de là:
en fait,
HttpServletRequest
a cette méthode, héritée deServletRequest
.c'est à partir de Servlet 3.0 ...
cette méthode existe chemin avant que la Servlet 3.0
OriginalL'auteur Biju Kunjummen
La suivante est correcte approche :
Sinon, au lieu de l'auto de câblage le ServletContext, vous pouvez mettre en œuvre ServletContextAware. Le printemps va remarquer lors de l'exécution dans un contexte d'application web et de les injecter le ServletContext. Lire cette.
OriginalL'auteur Jeevan Patil
Vous pouvez aussi le faire en ligne:
OriginalL'auteur Guy L
Vous pouvez implémenter une Interface de Printemps appelé
org.springframework.web.context.ServletContextAware
Ensuite, vous pouvez utiliser le
servletContext
n'importe quel endroit dans la classe.OriginalL'auteur sendon1982
En accédant à la session, vous pouvez obtenir le servlet contexte, des exemples de code:
Vous pouvez obtenir le HttpSession de la HttpServletRequest aussi.
OriginalL'auteur ElderMael