JSP model 2 architecture
जेएसपी मॉडल 2 जावा वेब अनुप्रयोगों के डिजाइन में उपयोग किया जाने वाला एक जटिल डिजाइन पैटर्न है जो सामग्री के प्रदर्शन को सामग्री प्राप्त करने और हेरफेर करने के लिए उपयोग किए जाने वाले तर्क से अलग करता है। चूँकि मॉडल 2 तर्क और प्रदर्शन के बीच एक अलगाव को संचालित करता है, यह आमतौर पर मॉडल-व्यू-कंट्रोलर (एमवीसी) प्रतिमान से जुड़ा होता है। जबकि एम. वी. सी. "मॉडल" का सटीक रूप मॉडल 2 डिजाइन द्वारा कभी निर्दिष्ट नहीं किया गया था, कई प्रकाशन एम. वी. सी. मॉडल कोड रखने के लिए एक औपचारिक परत की सिफारिश करते हैं। उदाहरण के लिए, जावा ब्लूप्रिंट्स ने मूल रूप से एमवीसी मॉडल को समाहित करने के लिए ईजेबी का उपयोग करने की सिफारिश की थी। मॉडल 2 अनुप्रयोग में, क्लाइंट ब्राउज़र से अनुरोध नियंत्रक को भेजे जाते हैं। नियंत्रक प्रदर्शन के लिए सही सामग्री प्राप्त करने के लिए आवश्यक किसी भी तर्क का प्रदर्शन करता है। इसके बाद यह सामग्री को अनुरोध में रखता है (आमतौर पर जावा बीन या पोजो के रूप में) और यह तय करता है कि यह अनुरोध किस दृश्य को भेजेगा। दृश्य तब नियंत्रक द्वारा पारित सामग्री को प्रस्तुत करता है। मॉडल 2 को मध्यम और बड़े आकार के अनुप्रयोगों के लिए अनुशंसित किया जाता है। 1998 में, सन माइक्रोसिस्टम्स ने जावासर्वर पेज विनिर्देश, संस्करण 0.92 का एक पूर्व-विमोचन प्रकाशित किया। इस विनिर्देश में, सन ने दो तरीके निर्धारित किए जिनके द्वारा जे. एस. पी. पृष्ठों का उपयोग किया जा सकता है। पहला मॉडल (दस्तावेज़ में इसके क्रम के कारण "मॉडल 1" के रूप में संदर्भित) एक सरल मॉडल था जिसमें जे. एस. पी. पृष्ठ स्वतंत्र, असंबद्ध इकाइयाँ थीं। तर्क को पृष्ठ के भीतर ही निहित किया जा सकता था, और पृष्ठों के बीच नेविगेशन आमतौर पर हाइपरलिंक के माध्यम से प्राप्त किया जाता था। यह टेम्पलेट प्रौद्योगिकी के तत्कालीन सामान्य उपयोग के साथ फिट बैठता है। कोल्डफ्यूजन और एक्टिव सर्वर पेज समकालीन तकनीकों के उदाहरण हैं जिन्होंने इस मॉडल को भी लागू किया। दस्तावेज़ द्वारा संदर्भित दूसरा मॉडल (क्रम में "मॉडल 2") एक बेहतर विधि थी जो जे. एस. पी. प्रौद्योगिकी के साथ सर्वलेट प्रौद्योगिकी को जोड़ती थी। सूचीबद्ध विशिष्ट अंतर यह था कि एक सर्वलेट अनुरोध को रोकता है, सामग्री को अनुरोध विशेषता (आमतौर पर एक जावाबीन द्वारा दर्शाया जाता है) में प्रस्तुत करने के लिए रखता है, फिर सामग्री को वांछित आउटपुट प्रारूप में प्रस्तुत करने के लिए एक जे. एस. पी. को कॉल करता है। यह मॉडल पिछले मॉडल से इस तथ्य में अलग था कि जे. एस. पी. तकनीक का उपयोग शुद्ध टेम्पलेट इंजन के रूप में किया गया था। सभी तर्क को एक सर्वलेट में अलग कर दिया गया था, जिससे जे. एस. पी. को प्रदान की गई सामग्री के लिए आउटपुट प्रस्तुत करने की एकमात्र जिम्मेदारी छोड़ दी गई थी। दिसंबर 1999 में, जावावर्ल्ड ने गोविंद शेषाद्री का एक लेख प्रकाशित किया जिसका शीर्षक था अंडरस्टैंडिंग जावासर्वर पेज मॉडल 2 आर्किटेक्चर। इस लेख में, गोविंद ने "मॉडल 2" शब्द के उपयोग में दो प्रमुख मील के पत्थर हासिल किए। पहला मील का पत्थर "मॉडल 2" शब्द को दो संभावित विकल्पों में से एक के बजाय एक वास्तुशिल्प पैटर्न के रूप में औपचारिक रूप देना था। दूसरा मील का पत्थर यह दावा था कि मॉडल 2 ने वेब-आधारित सॉफ्टवेयर के लिए एक एमवीसी वास्तुकला प्रदान की। गोविंद का मानना था कि क्योंकि "मॉडल 2" वास्तुकला ने तर्क को जे. एस. पी. से अलग किया और इसे एक सर्वलेट में रखा, दोनों टुकड़ों को एम. वी. सी. वास्तुकला में "व्यू" और "कंट्रोलर" (क्रमशः) के रूप में देखा जा सकता है। एमवीसी वास्तुकला के "मॉडल" भाग को गोविंद द्वारा खुला छोड़ दिया गया था, इस सुझाव के साथ कि लगभग कोई भी डेटा-संरचना आवश्यकताओं को पूरा कर सकती है। लेख में उपयोग किया गया विशिष्ट उदाहरण उपयोगकर्ता के सत्र में संग्रहीत एक वेक्टर सूची थी। मार्च 2000 में, अपाचे स्ट्रट्स परियोजना जारी की गई थी। इस परियोजना ने व्यू और कंट्रोलर के बीच विभाजन को औपचारिक रूप दिया और "मॉडल 2" पैटर्न के कार्यान्वयन का दावा किया। एक बार फिर, "मॉडल" के कार्यान्वयन को इस उम्मीद के साथ परिभाषित नहीं किया गया था कि सॉफ्टवेयर डेवलपर्स एक उपयुक्त समाधान भरेंगे। जे. डी. बी. सी. और ई. जे. बी. के माध्यम से डेटाबेस इंटरैक्शन स्ट्रट्स होमपेज पर सुझाए गए विकल्प थे। हाल ही में, हाइबरनेट, आईबेटिस और ऑब्जेक्ट रिलेशनल ब्रिज को अधिक आधुनिक विकल्पों के रूप में सूचीबद्ध किया गया था जिनका उपयोग एक मॉडल के लिए किया जा सकता था। स्ट्रट्स के जारी होने के बाद से, कई प्रतिस्पर्धी ढांचे सामने आए हैं। इनमें से कई ढांचे "मॉडल 2" और "एमवीसी" को लागू करने का भी दावा करते हैं। नतीजतन, दोनों शब्द डेवलपर्स के दिमाग में पर्याय बन गए हैं। इसके कारण संक्षिप्त में "एमवीसी मॉडल 2" या "एमवीसी 2" शब्द का उपयोग किया गया है। गलत धारणाएँ एक आम गलत धारणा यह है कि मॉडल 2 के कार्यान्वयन को प्राप्त करने के लिए एक औपचारिक एमवीसी पैटर्न की आवश्यकता होती है। हालाँकि, जावा ब्लूप्रिंट विशेष रूप से इस व्याख्या के खिलाफ चेतावनी देते हैंः जे2ईई प्लेटफॉर्म में वेब-स्तरीय तकनीक पर साहित्य अक्सर बिना स्पष्टीकरण के "मॉडल 1" और "मॉडल 2" शब्दों का उपयोग करता है। यह शब्दावली जे. एस. पी. विनिर्देशन के प्रारंभिक मसौदों से उपजी है, जिसमें जे. एस. पी. पृष्ठों के लिए दो बुनियादी उपयोग पैटर्न का वर्णन किया गया है। जबकि शब्द विनिर्देशन दस्तावेज़ से गायब हो गए हैं, वे आम उपयोग में बने हुए हैं। मॉडल 1 और मॉडल 2 बस एक नियंत्रक सर्वलेट की अनुपस्थिति या उपस्थिति (क्रमशः) को संदर्भित करते हैं जो ग्राहक स्तर से अनुरोध भेजता है और दृश्यों का चयन करता है। इसके अलावा, "एम. वी. सी. 2" शब्द ने कई लोगों को यह गलत धारणा दी है कि मॉडल 2 अगली पीढ़ी के एम. वी. सी. पैटर्न का प्रतिनिधित्व करता है। वास्तव में, एम. वी. सी. 2 "एम. वी. सी. मॉडल 2" शब्द का संक्षिप्त रूप है। "एम. वी. सी. 2" शब्द पर भ्रम ने मॉडल 1 कोड पर अतिरिक्त भ्रम पैदा कर दिया है, जिसके परिणामस्वरूप "एम. वी. सी. 1" शब्द का सामान्य उपयोग होता है। यह भी देखें कि अपाचे स्ट्रट्स मॉडल 2 वास्तुकला पर आधारित वेब-अनुप्रयोगों को लागू करने के लिए एक मुक्त-स्रोत ढांचा है। संदर्भ बाहरी लिंक एम. वी. सी. का इतिहास, जिसमें मॉडल 2 ASP.NET प्रस्तुति पैटर्न शामिल हैं-इस लेख में डिनो एस्पोसिटो चर्चा करता है कि मॉडल 2 का उपयोग ASP.NET एम. वी. सी. में भी कैसे किया जाता है। सॉफ्टवेयर डिजाइन पैटर्न सॉफ्टवेयर वास्तुकला