2009-02-17 6 views
26

Ich entwickle eine App mit einem Flex-basierten Frontend und einem Spring/Hibernate-Backend.Wie bekomme ich einen HttpServletRequest in meinen Frühlingsbohnen?

Damit die Facebook-Integration funktioniert, wie ich sie gerade habe, muss ich die Cookies in Javascript am Frontend am Backend lesen und bei der Anmeldung überprüfen, ob der Benutzer versucht um seinen Facebook Login zu parodieren.

Das wäre ziemlich einfach, aber ich kann nicht herausfinden, wie man die HttpServletRequest bekommen. Ich verwende eine ziemlich einfache Spring-Konfiguration (das ist meine erste echte Spring-App, und ich bin jetzt ziemlich vertraut mit ihr, aber es gibt viele, die ich noch nie gesehen habe.)

Ich benutze nicht Spring MVC oder Spring WebFlow oder so ähnlich. Ich kann den ServletContext bekommen, aber ich habe noch nicht herausgefunden, wie man die Anfrage bekommt.

Irgendwelche Hilfe?

Antwort

69

Wenn FlexContext nicht verfügbar:

Lösung 1: inside-Methode (> = Feder 2.0 erforderlich)

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder 

     .getRequestAttributes()).getRequest(); 

Lösung 2: innen Bohne (! Wahrscheinlich Frühling 3.0 für Singelton Bohnen erforderlich)

@Autowired 

private HttpServletRequest request; 
+0

Sie auch die @Resource Anmerkung statt Autowired verwenden zu verwenden. Sie müssen das Autowiren dann nicht explizit anfordern, und Sie sind etwas weniger an Spring gebunden. – pstobiecki

+2

Autowired hat 'boolean required() default true;' – Sonny

11

Dies ist eine Art Flex/BlazeDS-spezifisch, aber hier ist die Lösung, die ich mir ausgedacht habe. Entschuldigung, wenn meine eigene Frage ein Fauxpas ist.

HttpServletRequest request = flex.messaging.FlexContext.getHttpRequest(); 

    Cookie[] cookies = request.getCookies(); 

    for (Cookie c:cookies) 
    { 
     log.debug(String.format("Cookie: %s, %s, domain: %s",c.getName(), c.getValue(),c.getDomain())); 
    } 

Es funktioniert, ich bekomme die Cookies. Mein Problem war der Frühling - BlazeDS hatte es. Der Frühling tut es wahrscheinlich auch, aber ich weiß immer noch nicht, wie ich dazu komme.