2013-05-10 10 views
6

क्योंकि मैं सर्वलेट प्रोग्रामिंग में नया हूं, यह संभव है कि मैं एक बुनियादी सवाल पूछूं।रैपर, फ़िल्टर और सर्वलेट

मैं एक ऐसा एप्लिकेशन लिख रहा हूं जहां एक फ़िल्टर को सर्वलेट से प्रतिक्रिया मिलती है, और इसके साथ कुछ गणना करता है। मुझे पता चला कि मुझे प्रतिक्रिया पकड़ने के लिए एक रैपर वर्ग की आवश्यकता है।

मेरा प्रश्न अब है क्यों रैपर की आवश्यकता है? अग्रिम में धन्यवाद!

+0

केवल आप ही इस प्रश्न का उत्तर दे सकते हैं क्योंकि आपको पहले से ही पता चला है कि आपको एक रैपर वर्ग की आवश्यकता है :-) आप क्या हासिल करने की कोशिश कर रहे हैं? और नहीं, एक रैपर (अनुरोध/प्रतिक्रिया) हमेशा जरूरी नहीं है ... – home

+0

जहां तक ​​मैं इसे समझ गया, जब मैं सर्वलेट प्रतिक्रिया पकड़ना चाहता हूं और अपने फ़िल्टर में इसके साथ कुछ करना चाहता हूं, तो मुझे एक रैपर चाहिए। क्या वो सही है? इस मामले के बारे में: मेरे पास एक फॉर्म है, जहां उपयोगकर्ता उपयोगकर्ता नाम और कुछ टेक्स्ट टाइप कर सकता है। इसे फिर किसी अन्य पृष्ठ पर प्रदर्शित किया जाना चाहिए। मुझे पता है कि एक सर्वलेट इनपुट पैरामीटर ले सकता है और दूसरे पेज पर अग्रेषित कर सकता है। क्या मैं इसे फ़िल्टर के साथ प्राप्त कर सकता हूं? –

+0

1. नहीं, किसने आपको बताया कि (एक उदाहरण यहां मदद कर सकता है)? 2. मैं फ़िल्टर में व्यावसायिक तर्क को लागू नहीं करना चाहूंगा, आपको लगता है कि फ़िल्टर बेहतर विकल्प क्यों है? – home

उत्तर

12

1) सबसे पहले यह समझने की सुविधा देता है कि कैसे Request और Request Filter काम:

है, की सुविधा देता है ग्राहक कहते हैं, सर्वलेट से एक अनुरोध करता है, यह कंटेनर के माध्यम से चला जाता है। कंटेनर तय करता है कि कौन सा सर्वलेट Request को अग्रेषित करने की आवश्यकता है। जिसका मतलब है, कंटेनर कुल नियंत्रण में है।

कंटेनर नियंत्रण आसान है क्योंकि हम सिर्फ कंटेनर जानते हैं कि Requestफिल्टर पहले के पास जाना चाहिए और उसके बाद सर्वलेट को दे सकते हैं लागू करने अनुरोध फिल्टर बनाता है। क्योंकि कंटेनर कुल नियंत्रण में है। तो अनुरोध फ़िल्टर लागू करना आसान है।

2) अब समझ सकते हैं कि कैसे Response और Response Filter काम:

कंटेनर का आह्वान जब सर्वलेट सेवा तरीकों, यह तरीकों, Request और Response करने के लिए 2 वस्तुओं से गुजरता है।

इसका मतलब यह है कि सर्वलेट क्लाइंट को प्रतिक्रिया भेजने के लिए कुल नियंत्रण में है। कैसे ?

क्योंकि Response ऑब्जेक्ट में पॉइंटर से Output Stream Writer ऑब्जेक्ट है। जिसका अर्थ है, एक बार सर्वलेट अनुरोध को संसाधित करने के बाद, पॉइंटर से Output Writer Stream ऑब्जेक्ट का उपयोग करके सीधे Response क्लाइंट को सीधे लिख देगा। तो, Servlet किसी के लिए इंतजार नहीं करेगा (फ़िल्टर जैसे मध्यम पुरुषों) और सीधे ग्राहक की सेवा। उस समय तक हस्तक्षेप करने में बहुत देर हो जाएगी।

तो, समाधान क्या है?

Wrapper हमारा समाधान है।

रैपर कैसे काम करता है?

तो, इससे पहले कि कंटेनर सर्वलेट को वास्तविक Request और Response वस्तुओं से गुजरता है, हम अपने Response वस्तु लपेट और फिर सर्वलेट सेवा तरीकों के Real Request और Wrapped Response वस्तुओं भेजें।

तो अब, सर्वलेट के पास हमारे Wrapped Output Stream Writer ऑब्जेक्ट पर पॉइंटर है और Real Response Output Stream Writer ऑब्जेक्ट नहीं है। इसलिए, जब सर्वलेट अनुरोध पूरा करता है, तो यह हमारे Wrapped Stream पर प्रतिक्रिया लिख ​​देगा और फिर हमारे Wrapped Response ObjectReal Response Writer Stream पर वापस लिखेंगे।

कहानी का नैतिक:wrapperResponse से निपटने के दौरान उपयोग करें।Request रैपर अवधारणा की आवश्यकता नहीं है।

+1

बहुत बढ़िया! धन्यवाद रवि :)! वह स्पष्ट और समझदार था। –

+0

आपका स्वागत है, मैशिया। चीयर्स! –

+0

अनुरोध को एक रैपर अवधारणा की आवश्यकता हो सकती है, यानी https://www.javacodegeeks.com/2012/07/anti-cross-site-scripting-xss-filter.html –

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