2011-08-29 13 views
8

मैं अपने प्रोजेक्ट के बैकएंड और जेएसपी को फ्रंटेंड के रूप में माइक्लिप्स में जर्सी जैक्स-आरएस का उपयोग कर रहा हूं। मैं सफल लॉगिन के बाद सर्वर से कुकी सेट करना चाहता हूं। जर्सी के आधिकारिक दस्तावेज में, मैं केवल जर्सी द्वारा कुकी कैसे प्राप्त कर सकता हूं। क्या कोई मुझे ऐसी चीजों को करने के लिए एक डेमो दे सकता है?जर्सी में कुकी कैसे सेट करें?

यह मेरा लॉगिन हिस्सा है और मैं एक प्रतिक्रिया देता हूं और यूआरएल "/" पर रीडायरेक्ट करता हूं जिसका अर्थ index.jsp है।

@GET 
@Produces("text/html") 
public Response getIndex(@CookieParam("name") String name) { 
    HashMap<String, Object> model = MapFactory.newHashMapInstance(); 
    model.put("name", name); 
    System.out.println("cookie name:\t" + name); 
    return Response.ok(new Viewable("/index", model)).build(); 
} 

हर बार जब मैं इस कोड चलाने के लिए, मुझे लगता है कि मैं कुकी सूचकांक हिस्से से नहीं मिल सकता है:

@Path("/login") 
@POST 
@Consumes("application/x-www-form-urlencoded") 
public Response login(@FormParam("email") String email, 
     @FormParam("password") String password) { 
    Map<String, Object> model = MapFactory.newHashMapInstance(); 
    model.put("email", email); 
    model.put("password", password); 
    loginCheck(model); 
    if (model.get("emailCheck").equals("ok") 
      && model.get("passwordCheck").equals("ok")) { 
     return Response.ok(
       new Viewable("/index", new NewCookie("name", 
         "Hello, world!"))).build(); 
    } else { 
     return Response.ok(new Viewable("/login", model)).build(); 
    } 
} 

यह मेरा "/" हिस्सा है। यदि आपने कभी भी इस प्रश्न से परेशान किया है और अंततः इसे हल किया है, तो कृपया मुझे कुछ निर्देश दें, धन्यवाद।

उत्तर

18

अपने उदाहरण में कुकी सेट करने के लिए आपको कुछ इस तरह कर सकते हैं:

return Response.ok(new Viewable("/index", model)) 
       .cookie(new NewCookie("name", "Hello, world!")) 
       .build(); 

लेकिन, 200 के बजाय 3xx प्रतिक्रिया वापस जाने के लिए "/" आप भी आवश्यकता होगी करने के लिए उदाहरण के लिए पुनर्निर्देशित करने के लिए अगर आप चाहते हैं :

return Response.seeOther("/") 
       .cookie(new NewCookie("name", "Hello, world!")) 
       .build(); 
+0

वैसे, क्या आप जानते हैं कि जब मैं अपनी साइट से लॉगआउट करना चाहता हूं तो उन्हें कैसे साफ करें (जर्सी में)? – mons

+2

'Response.ok() कुकी (नया न्यूक्यूकी ("नाम", शून्य, शून्य, शून्य, शून्य, 0/* maxAge * /, झूठी) का उपयोग करके कुकी के अधिकतम आकार को 0 पर सेट करने का प्रयास करें।) (Build) ' –

+0

हाँ, मैं maxAge का उपयोग करके" साफ "कर रहा हूं। मुझे आश्चर्य है कि कुकीज को साफ करने के लिए xxx.clean() विधि जैसे कुछ अन्य तरीके हैं। वैसे भी, यह सवाल पहले ही सफलतापूर्वक हल हो चुका है। आपके उत्तर के लिए धन्यवाद। अपनी साझािकरण की सराहना करें। – mons

संबंधित मुद्दे