design patterns - एमआरसी पैटर्न के संदर्भ में स्ट्रॉप्स 2 में क्या कार्रवाई की गई है?




design-patterns model-view-controller (2)

यह कार्य निश्चित रूप से मॉडल के बजाय नियंत्रक के रूप में शर्तों के करीब है। खासकर यदि आप STRETS2 के साथ बाकी का उपयोग करते हैं तो आप स्ट्रैट 2 एक्शन के लिए मैपिंग REST URL पढ़ सकते हैं।

क्रियाएं या नियंत्रक? सबसे Struts 2 डेवलपर्स कार्रवाई से परिचित हैं वे चीजें हैं जो आने वाले अनुरोधों द्वारा निष्पादित होती हैं। REST प्लगइन के संदर्भ में, आपको बस अपने पैर की उंगलियों पर रखने के लिए, हम रीस्टालिंग भाषा को अपनाना और नियंत्रक के रूप में हमारे कार्यों का संदर्भ लेंगे। भ्रमित मत हो; यह सिर्फ एक नाम है!

नियंत्रक अनुरोध को संभालने और परिणाम के रूप में एक दृश्य वापस करने के लिए जिम्मेदार है। यह है कि स्ट्रॉस 2 में कार्रवाई क्या कर रही है

तथ्य यह है कि उपयोगकर्ता अक्सर अपने मॉडल को नियंत्रक के साथ जोड़ते हैं, नियंत्रक की परिभाषा को गलत जगह नहीं रखता है। तो अगर एक नियंत्रक के मॉडल हैं तो आप सोच सकते हैं कि यह बड़ा मॉडल का एक हिस्सा है। ऐसा नहीं है

कभी कम महत्वपूर्ण हिस्सा मॉडल का संचार और दृष्टिकोण नहीं है स्ट्रॉस 2 में यह क्रिया संदर्भ के माध्यम से किया जाता है। मॉडल को प्राप्त करने के लिए दृश्य प्रसंग से दृश्य का उपयोग होना चाहिए। यह ओजीएनएल द्वारा वायर्ड है

फ्रेमवर्क ActionContext प्रसंग को हमारे ActionContext सेट करता है, और OGNL रूट ऑब्जेक्ट होने के लिए मान स्टैक

स्ट्रट्स के वर्तमान संस्करण में एक्शन / नियंत्रक को मान स्टैक पर धकेल दिया जाता है, और एक मॉडल की तरह ही उसी तरह पहुँचा जाता है। यह हानिरहित ऑपरेशन है क्योंकि नियंत्रक सूत्र-सुरक्षित उदाहरण हैं क्यों उन्हें मॉडल की तरह पुन: उपयोग नहीं करें?

यह नियंत्रक को एक मॉडल ऑब्जेक्ट्स को एकत्रित करने और वहां से वहां तक ​​पहुंचने के लिए हानिरहित भी नहीं है। आप किसी भी संख्या में मॉडल को उसी कार्रवाई में जोड़ सकते हैं। लेकिन अगर आप एक मॉडल के बारे में सोचते हैं, तो आप ModelDriven कार्रवाई का उपयोग कर सकते हैं लेकिन अंतिम अनुशंसित नहीं है क्योंकि यह स्ट्रट्स 2 के आवेदन की अनावश्यक जटिलता लाता है, और दुर्भाग्य से त्रुटि प्रवण।

स्ट्रट्स 2 में, एक नियंत्रक एक एक्शन के लिए अनुरोध प्रेषित करता है और एक्शन इसे बैक-एंड लॉजिक के पास भेजता है, जिसे अनुरोध पर कार्रवाई करने के लिए एक बहुत बड़ा "मॉडल" माना जा सकता है और जेएसपी दर्शनों का प्रतिनिधित्व करता है।

कैसे Struts2 में कार्रवाई परिभाषित करने के लिए? निश्चित रूप से यह नहीं दिखता ... क्या यह नियंत्रक या मॉडल है?


यह निश्चित रूप से नियंत्रक का हिस्सा है, लेकिन यह मॉडल का भी हिस्सा है।

मेरा 2 सेंट:

कार्रवाई नियंत्रक है क्योंकि ...

... Struts2 में नियंत्रक एक उचित प्रतिक्रिया का प्रस्ताव करने के लिए अनुरोध को पढ़ने, व्याख्या और जोड़ तोड़ने के लिए जिम्मेदार सब कुछ द्वारा बना है, और इसलिए हां, कार्रवाई नियंत्रक है, इंटरसेप्टर स्टैक में प्रत्येक इंटरसेप्टर के साथ, और हम फ़िल्टर, ActionMapper और इतने पर शामिल करने के लिए अर्थ को चौड़ा कर सकता है

कार्रवाई एक आदर्श है क्योंकि ...

... Struts2 एक पुल- MVC ढांचे है:

पुल-एमवीसी और पुश-एमवीसी को बेहतर ढंग से समझा जाता है कि दृश्य परत डेटा कैसे प्राप्त कर रहा है, जैसे कि रेंडर करने के लिए मॉडल। पुश-एमवीसी के मामले में डेटा (मॉडल) का निर्माण और नियंत्रक द्वारा दृश्य परत को दिया जाता है ताकि उसे अनुरोध या सत्र जैसे स्कॉप्ड चर में डाल दिया जाए। विशिष्ट उदाहरण स्प्रिंग एमवीसी और स्ट्रट्स 1 हैं। दूसरी तरफ पुल-एमवीसी ने कहा है कि आम तौर पर नियंत्रकों में बनाए गए मॉडल डेटा एक सामान्य स्थान यानी क्रियाओं में रखे जाते हैं, जो फिर दृश्य परत द्वारा प्रदान किए जाते हैं। स्ट्रट्स 2 एक पुल-एमवीसी आधारित वास्तुकला है, जिसमें सभी डेटा वैल्यू स्टैक में संग्रहीत है और प्रतिपादन के लिए दृश्य परत द्वारा प्राप्त किया गया है

फिर Struts2 में वैल्यू स्टैक मॉडल है, और एक्शन को मान स्टैक (ऊपर) पर धकेल दिया जाता है। इसलिए, कार्रवाई मॉडल का हिस्सा है। हम पूरे एक्शनकॉन्टेक्स्ट को शामिल करने के लिए मॉडल के अर्थ को चौड़ा कर सकते हैं (अपने सभी स्कोप के साथ - पृष्ठ, अनुरोध, सत्र ...)

तब क्रिया नियंत्रक है जब आपके execute() पद्धति के अंदर, और वह मॉडल होता है, जब वह गुण जो कि आप जेएसपी से getSomething() प्राप्तकर्ता विधियों के माध्यम से प्राप्त करते हैं।

और अब, महत्वपूर्ण बात: ModelDriven का उपयोग न करें : o)





struts