2010-09-01 29 views
6

का उपयोग कर किसी जेएसपी पृष्ठ से एक सर्वलेट को कॉल करना मुझे पता है कि यहां कुछ संबंधित प्रश्न हैं लेकिन वास्तव में मेरे प्रश्न से संबंधित कोई भी जवाब उत्तर नहीं देता है। या कम से कम एक स्वीकार्य उत्तर। अगर कोई मुझे प्रश्न पर इंगित कर सकता है तो इसमें गलत होने की खुशी है। अगर मुझे याद आती है तो कृपया पुनः प्रयास करें।jQuery AJAX

मेरा प्रश्न, जैसा कि शीर्षक कहता है कि मैं अपने जेएसपी पेज से एक सर्वलेट को कॉल करना चाहता हूं और एक स्ट्रिंग या एचटीएमएल वापस करना चाहता हूं।

मेरा सर्वलेट नाम MyFirstServlet है।

क्या आप कृपया उत्तर दे सकते हैं, कृपया किसी भी उत्तर में बहुत विशिष्ट हो क्योंकि मैं एक पूर्ण जेएसपी, जावा और सर्वलेट नोबी हूं।

अग्रिम में बहुत बहुत धन्यवाद।

उत्तर

8

पहले सर्वलेट क्लास बनाएं जो अनुरोध के आधार पर वांछित प्रतिक्रिया देता है। यह एचटीएमएल, एक्सएमएल या जेएसओएन हो सकता है। मैं इसके लिए JSON का उपयोग करने का सुझाव दूंगा क्योंकि यह जावा में सबसे आसान उत्पादक है और जावास्क्रिप्ट में उपभोग योग्य है। आप उदाहरण के लिए Google Gson का उपयोग पूर्ण पूर्ण जावा ऑब्जेक्ट से JSON स्ट्रिंग (और इसके विपरीत) में कनवर्ट करने के लिए कर सकते हैं। जैसे

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOexception { 
    // Populate response data somehow. Can be a String, Javabean or Collection/Map of either. 
    Map<String, Object> data = new HashMap<String, Object>(); 
    data.put("success", true); 
    data.put("message", "Hello World!"); 
    data.put("param", request.getParameter("foo")); 
      
    // Write response data as JSON. 
    response.setContentType("application/json"); 
    response.setCharacterEncoding("UTF-8"); 
    response.getWriter().write(new Gson().toJson(data)); 
} 

एक बार सर्वलेट समाप्त होने के बाद, इसे सामान्य रूप से web.xml में मानचित्र करें। जैसे url-pattern/firstServlet पर।

फिर, jQuery में आप दिए गए संसाधन से JSON प्राप्त करने के लिए $.getJSON() का उपयोग कर सकते हैं। पहला तर्क यूआरएल है, जो स्पष्ट रूप से firstServlet है। दूसरा तर्क कॉलबैक फ़ंक्शन है जिसमें आप लौटाए गए प्रतिक्रिया डेटा पर काम कर सकते हैं। मैंने शुद्ध प्रदर्शन उद्देश्यों के लिए अनुरोध पैरामीटर foo पारित कर दिया है, यह अनिवार्य नहीं है।

$.getJSON('firstServlet?foo=bar', function(data) { 
    alert('Success: ' + data.success + '\n' 
     + 'Message: ' + data.message + '\n' 
     + 'Param: ' + data.param); 
}); 

आप बस एक साधारण चेतावनी प्रदर्शित करने के बजाय इसके साथ और अधिक कर सकते हैं। जैसे लौटाए गए डेटा के आधार पर वर्तमान पृष्ठ में HTML DOM को मैन्युफुलेट करना/ट्रैवर्स करना।

मैं यहाँ से पहले व्यावहारिक उदाहरण के साथ दो उत्तर पोस्ट किया है, तो आप इसे उपयोगी रूप में अच्छी तरह मिल सकता है: