2014-04-30 6 views
5

मैं एक स्प्रिंग आवेदन पर काम कर रहा हूँ जिसमें मैं फ़ाइलों के MD5 जाँच की तरह कुछ सुरक्षा जांच करना चाहते हैं, डीबी चेकिंग, आवेदन संस्करण की जांच आदिInterceptors या फिल्टर

मैं Interceptors और फिल्टर, लेकिन अभी भी एक के बारे में पढ़ा है थोड़ी उलझन में है कि किसके लिए उपयोग करना अच्छा है।

जो भी दस्तावेज मैंने पढ़ा है, यह निर्दिष्ट किया जाता है कि फिल्टर और इंटरसेप्टर दोनों लॉगिंग और लेखा परीक्षा तो जो एक इस परिदृश्य के लिए अच्छा है के लिए इस्तेमाल किया जा सकता है। इसके अलावा यह सभी सुरक्षा जांच (फाइलों की एमडी 5 जांच, डीबी जांच, अनुप्रयोग संस्करण जांच) कॉन्फ़िगर किया जा सकता है मतलब डीबी चेक की अनुमति है, एप्लिकेशन संस्करण जांच भी इसी तरह की अनुमति है।

+0

डुप्लिकेट का (के बाद http://stackoverflow.com/questions/8000844/spring-handlerinterceptor-vs-servlet अलावा एक अतिरिक्त नियंत्रण बिंदु afterCompletion देना -फिल्टर) – anre

उत्तर

9

मेरी राय फिल्टर और Interceptors बीच सबसे बड़ा अंतर में से एक में है:

फ़िल्टर केवल J2EE वेब अनुप्रयोगों में काम करता है, तो आप आवेदन सर्वर के बाहर उपयोग नहीं कर सकते, Interceptors विभिन्न घटकों में काम कर सकते हैं और नहीं पर निर्भर करता है वेब परत, संक्षेप में इंटरसेप्टर में फिल्टर की तुलना में एक विस्तृत क्षेत्र है। यदि आप कंटेनर के बाहर कुछ घटक स्थानांतरित करने की योजना बना रहे हैं, तो आपको उपयोग इंटरसेप्टर पर विचार करना चाहिए।

फिल्टर अनुरोध/प्रतिक्रिया डोमेन अधिक काम करते हैं, विधि निष्पादन डोमेन दूसरी ओर इंटरसेप्टर अधिनियम अधिक में।

आप कुछ है कि इस तरह के प्रवेश, सुरक्षा, लेखा परीक्षा के रूप में अपने आवेदन करने के लिए अनुरोध या प्रतिक्रिया को प्रभावित कर सकते हैं, या आप डेटा उन पर आने वाले को प्रभावित करेगा क्या करने की जरूरत है, तो अपने विकल्प, फिल्टर है प्लग क्षमता मत भूलना जो कि प्रदान करता है।

Interceptors विधि आमंत्रण या जीवन चक्र की घटनाओं के साथ, संयोजन के रूप में उपयोग किया जाता है जावा ईई कामयाब वर्गों के साथ करने के लिए डेवलपर्स एक संबद्ध लक्ष्य वर्ग पर इंटरसेप्टर विधियां प्रारंभ करने की अनुमति देने के संयोजन के रूप में

+0

आपके त्वरित उत्तर के लिए धन्यवाद, मैं गलत हो सकता हूं लेकिन आपके वाक्य फ़िल्टर के अनुसार वेब परत में काम करता है और इंटरसेप्टर्स का उपयोग कहीं भी किया जा सकता है, है ना? – Amogh

+0

फ़िल्टर एक वेब घटक, दूसरे हाथ इंटरसेप्टर में एक इंटरसेप्टर पद्धति के रूप में, या एक इंटरसेप्टर वर्ग कहा जाता है एक संबद्ध कक्षा में एक लक्ष्य वर्ग के भीतर परिभाषित किया जा सकता है, और हाँ कहीं भी इस्तेमाल किया जा सकता सिर्फ अगर आप कुछ प्रयोग कर रहे हैं ढांचे पर निर्भर एक, javax.interceptor व्यापक रूप से – Koitoer

+0

ठीक है, मुझे अब मिल गया।मैं इंटरसेप्टर फिर भी मैं अभी तक अपने स्पष्ट नहीं है क्योंकि किसी भी घटक के बाहर कंटेनर बाहर ले जाने के लिए मेरे लिए क्या कंटेनर से बाहर ले जाने का मतलब यह है की योजना नहीं बना रहा हूँ के साथ जाना होगा। मैं इंटरसेप्टर का उपयोग करता है, तो किसी भी सुरक्षा जांच प्राप्त विफल रहता है तो मैं ModelAndView जो इंटरसेप्टर का उपयोग किया जा सकता है बदल सकते हैं क्योंकि जाएगा। क्या यह सही है? – Amogh

3

मैं जवाब देने के लिए देर से कर रहा हूँ , हालांकि मैं इसके बारे में अपने विचार साझा करना चाहता हूं।

एक फ़िल्टर वेब परत केवल के रूप में यह web.xml में परिभाषित किया गया है में प्रयोग किया जाता है। हम इसका इस्तेमाल वेब संदर्भ से नहीं कर सकते हैं। जबकि स्प्रिंग इंटरसेप्टर्स का कहीं भी उपयोग किया जा सकता है क्योंकि इसे एप्लिकेशन संदर्भ में परिभाषित किया गया है।

अंतर ऊपर ध्यान में रखते हुए, लॉग इन प्रमाणीकरण और वेब पृष्ठों हम एक सर्वलेट फिल्टर का उपयोग करना चाहिए से आने वाले अनुरोधों की लेखा परीक्षा के लिए। अपने व्यापार परत लॉगिंग और ऑडिटिंग को कार्यान्वित करने के लिए और कई अन्य सुविधाओं के साथ हमें एक इंटरसेप्टर का उपयोग करना चाहिए।

इस के अलावा, यदि आप वसंत MVC का उपयोग कर रहे हैं। तो आप वसंत में सर्लेट फ़िल्टर और अन्य में कुछ तर्क लिखने के बजाय, एक ढांचे में फ़िल्टरिंग या अवरोध करने के सभी तर्क रखना चाहते हैं।

वसंत से पहले करने के लिए और [बनाम सर्वलेट फिल्टर स्प्रिंग HandlerInterceptor] तरीकों

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