2009-02-17 17 views
26

मैं फ्लेक्स-आधारित फ्रंट एंड और स्प्रिंग/हाइबरनेट बैक-एंड के साथ एक ऐप विकसित कर रहा हूं।मैं अपने वसंत बीन्स में एक HttpServletRequest कैसे प्राप्त करूं?

तरह से मैं यह वर्तमान में मिल गया है में काम कर रहे फेसबुक एकीकरण पाने के लिए, मैं देखना चाहता उपयोगकर्ता प्रयास कर रहा है कि क्या कुकीज़ बैक-एंड पर सामने के छोर पर जावास्क्रिप्ट में सेट पढ़ सकते हैं और प्रवेश के दौरान कुछ मान्यकरण करना होगा अपने फेसबुक लॉगिन को धोखा देने के लिए।

यह बहुत आसान होगा, लेकिन मैं यह नहीं समझ सकता कि HttpServletRequest कैसे प्राप्त करें। मैं एक सुंदर मूल स्प्रिंग कॉन्फ़िगरेशन का उपयोग कर रहा हूं (यह मेरा पहला असली स्प्रिंग ऐप है, और मैं अब इसके साथ बहुत परिचित हूं, लेकिन इसके लिए बहुत कुछ है मैंने कभी नहीं देखा है।)

मैं उपयोग नहीं कर रहा हूं स्प्रिंग एमवीसी या स्प्रिंग वेबफ्लो या ऐसा कुछ भी। मैं ServletContext प्राप्त कर सकता हूं, लेकिन मुझे अभी तक यह पता नहीं लगा है कि अनुरोध कैसे प्राप्त किया जाए।

कोई मदद?

उत्तर

69

तो FlexContext उपलब्ध नहीं है:

समाधान 1: विधि के अंदर (> = स्प्रिंग 2.0 आवश्यक)

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder 

     .getRequestAttributes()).getRequest(); 

समाधान 2: सेम के अंदर (! शायद singelton आवश्यक सेम के लिए 3.0 वसंत)

@Autowired 

private HttpServletRequest request; 
+0

उपयोग करने के लिए आप भी Autowired के बजाय @Resource एनोटेशन का उपयोग कर सकते था। आपको तब स्पष्ट रूप से ऑटोवॉयरिंग की आवश्यकता नहीं है, और आप थोड़ा कम वसंत के लिए बाध्यकारी हैं। – pstobiecki

+2

Autowired में 'बुलियन आवश्यक है)() डिफ़ॉल्ट सत्य; ' – Sonny

11

यह फ्लेक्स/ब्लेज़डीएस विशिष्ट है, लेकिन यहां समाधान है जिसके साथ मैं आया हूं। क्षमा करें अगर मेरे अपने प्रश्न का उत्तर एक गलत पैस है।

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

यह काम करता है, मुझे कुकीज़ मिलती है। मेरी समस्या वसंत की तलाश में थी - BlazeDS यह था। वसंत शायद भी करता है, लेकिन मुझे अभी भी पता नहीं है कि इसे कैसे प्राप्त किया जाए।

1

@Context एनोटेशन (इस सवाल में जवाब देखें: What does context annotation do in Spring?) यह कारण होगा आप के लिए इंजेक्ट किया जा करने के लिए।

मैं

@Context 
private HttpServletRequest request; 
संबंधित मुद्दे