2009-02-17 18 views
26

Flex tabanlı ön uç ve Spring/Hibernate back-end ile bir uygulama geliştiriyorum.Bahar fasulyemde HttpServletRequest'i nasıl alabilirim?

Şu anda sahip olduğum şekilde çalışmakta olan Facebook entegrasyonu almak için, arka uçta ön uçtaki javascript'te ayarlanan çerezleri okumalı ve girişimde bulunup bulunmadığını görmek için giriş sırasında bazı doğrulama yapmam gerekiyor. Facebook girişini taklit etmek için.

Bu oldukça kolay olurdu, ancak HttpServletRequest'i nasıl alacağımı anlayamıyorum. Oldukça basit bir Spring config kullanıyorum (bu benim ilk gerçek Spring uygulaması, ve şimdi oldukça tanıdık, ama bakmadığım bir sürü var.)

Kullanmıyorum Bahar MVC veya Bahar WebFlow veya bunun gibi bir şey. ServletContext'i alabilirim, ama henüz nasıl bir istek alacağımı anlamadım.

Herhangi bir yardım?

cevap

69

FlexContext mevcut değilse:

Çözüm 1: (Bahar 2.0 gerekli> =) yöntemi içinde

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder 

     .getRequestAttributes()).getRequest(); 

Çözüm 2: fasulye içindeki (! Muhtemelen gerekli singelton fasulye 3.0 Bahar)

@Autowired 

private HttpServletRequest request; 
+0

kullanmak zorunda kaldı. Otomatik kablolamayı açıkça gerektirmezsiniz ve siz de Spring'e biraz daha az bağımlısınız. – pstobiecki

+2

Otomatik Kablolu, 'boolean required() default true; ' – Sonny

11

Bu, Flex/BlazeDS'ye özgü bir özelliktir, ancak işte size sunduğum çözüm. Üzgünüm kendi sorumu cevaplarken sahte bir pastır.

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())); 
    } 

Çalışıyor, çerezleri alıyorum. Benim sorunum Spring'e bakıyordu - BlazeDS'in vardı. Bahar muhtemelen de öyle, ama yine de ona nasıl ulaşacağımı bilmiyorum.

1

@Context ek açıklaması (bu sorudaki yanıtlara bakın: What does context annotation do in Spring?) sizin için enjekte edilmesine neden olacaktır.

ben de yerine Autowired ait @Resource ek açıklamasını kullanabilirsiniz

@Context 
private HttpServletRequest request;