जेएसपी में एमवीसी (Archiटेक्चर)
⚡ स्मार्ट सारांश
JSP में MVC एप्लिकेशन संबंधी कार्यों को मॉडल, व्यू और कंट्रोलर लेयर्स में विभाजित करता है, जहां JSP व्यू को रेंडर करता है, एक सर्वलेट कंट्रोलर के रूप में कार्य करता है, और Javaबीन्स स्वच्छ, परीक्षण योग्य और रखरखाव योग्य वेब अनुप्रयोगों के लिए मॉडल को समाहित करते हैं।

MVC क्या है?
MVC का पूरा नाम मॉडल-व्यू-कंट्रोलर है। यह एक सॉफ्टवेयर डिज़ाइन पैटर्न है जो किसी एप्लिकेशन को तीन परस्पर जुड़े स्तरों में विभाजित करता है: व्यावसायिक तर्क, प्रस्तुति और डेटा। MVC में:
- M मॉडल का प्रतिनिधित्व करता है
- V व्यू का संक्षिप्त रूप है
- C नियंत्रक का संक्षिप्त रूप है
MVC एक व्यवस्थित एप्लिकेशन निर्माण विधि है जिसमें प्रवाह व्यू लेयर से शुरू होता है। उपयोगकर्ता द्वारा अनुरोध उठाया जाता है, कंट्रोलर लेयर में संसाधित किया जाता है, और डेटा डालने या प्राप्त करने के लिए मॉडल लेयर को भेजा जाता है। मॉडल फिर सफलता या विफलता का उत्तर देता है जिसे व्यू उपयोगकर्ता के लिए प्रदर्शित करता है। MVC आर्किटेक्चर आरेख नीचे दर्शाया गया है:

MVC का उपयोग क्यों करें? Archiजेएसपी में संरचना?
कूदने से पहलेping JSP में MVC कैसे काम करता है, यह समझने के लिए यह जानना ज़रूरी है कि डेवलपर इस पैटर्न को क्यों अपनाते हैं। एक ही JSP पेज में बिज़नेस लॉजिक, डेटाबेस कॉल और HTML को मिलाने से जल्दी ही अव्यवस्थित स्पैगेटी कोड बन जाता है जिसे संभालना मुश्किल होता है। MVC प्रत्येक कार्य को उसकी अपनी लेयर देकर इस समस्या को हल करता है:
- Code प्रत्येक फ़ाइल की एक ही ज़िम्मेदारी होने के कारण इसे पढ़ना आसान हो जाता है।
- टीमें बिना किसी टकराव के व्यू, कंट्रोलर और मॉडल पर समानांतर रूप से काम कर सकती हैं।
- यूनिट टेस्ट सीधे मॉडल को लक्षित करते हैं, जेएसपी रेंडरिंग को प्रभावित किए बिना।
- विनिमयping JSON प्रतिक्रिया या किसी अन्य टेम्पलेट इंजन के लिए JSP व्यू बनाना सीधा-सादा है।
JSP में MVC कैसे काम करता है
JSP-आधारित MVC एप्लिकेशन में, प्रत्येक परत एक विशिष्ट मान से मेल खाती है। Java तकनीक। JSP फ़ाइलें व्यू को रेंडर करती हैं, एक सर्वलेट कंट्रोलर के रूप में कार्य करता है, और Javaबीन्स मॉडल को समाहित करते हैं। नीचे दिए गए अनुभाग प्रत्येक परत की जिम्मेदारियों को समझाते हैं।
मॉडल परत
- यह डेटा लेयर है जिसमें सिस्टम का बिजनेस लॉजिक शामिल होता है।
- इसमें एप्लिकेशन का सारा डेटा शामिल होता है।
- यह एप्लिकेशन की स्थिति को भी दर्शाता है।
- यह से बनाया गया है Javaबीन्स या पीओजेओ जो इससे जुड़ते हैं डेटाबेस.
- कंट्रोलर डेटा प्राप्त करने के लिए मॉडल के साथ संचार करता है और इसे व्यू लेयर को अग्रेषित करता है।
- यह मॉडल डेटाबेस से जुड़ता है और उसमें डेटा को सहेजता है।
परत देखें
- यह एप्लिकेशन की प्रेजेंटेशन लेयर है।
- इसमें HTML, JSP, CSS और शामिल हैं। Javaस्क्रिप्ट।
- यह सामान्यतः एप्लिकेशन का यूजर इंटरफेस प्रस्तुत करता है।
- यह कंट्रोलर से प्राप्त डेटा को प्रदर्शित करता है, जो बदले में मॉडल लेयर क्लास से डेटा प्राप्त करता है।
- व्यू लेयर में बिजनेस लॉजिक शामिल किए बिना एप्लिकेशन के यूआई पर डेटा प्रदर्शित होता है।
नियंत्रक परत
- यह दृश्य और मॉडल के बीच इंटरफेस के रूप में कार्य करता है।
- यह व्यू लेयर से आने वाले सभी अनुरोधों को इंटरसेप्ट करता है।
- यह व्यू लेयर से अनुरोध प्राप्त करता है, उन्हें संसाधित करता है और अनुरोध पर सत्यापन करता है।
- अनुरोध को डेटा प्रोसेसिंग के लिए मॉडल लेयर को भेजा जाता है। अनुरोध संसाधित होने के बाद, मॉडल आवश्यक जानकारी के साथ परिणाम कंट्रोलर को वापस भेजता है, जिसे व्यू प्रदर्शित करता है।
एमवीसी के लाभ Archiटेक्चर
एमवीसी के लाभ हैं:
- बनाए रखने के लिए आसान
- विस्तार करना आसान है
- परीक्षण करने में आसान
- नेविगेशन नियंत्रण केंद्रीकृत है
- परतों के बीच ढीला युग्मन रिफैक्टरिंग को अधिक सुरक्षित बनाता है।
- एक से अधिक टीम सदस्यों द्वारा समानांतर विकास संभव है।
MVC के साथ JSP अनुप्रयोग डिज़ाइन का उदाहरण Archiटेक्चर
इस उदाहरण में, हम यह दिखाने जा रहे हैं कि JSP एप्लिकेशन में MVC आर्किटेक्चर का उपयोग कैसे किया जाता है।
- हम एक ऐसे फॉर्म का उदाहरण ले रहे हैं जिसमें दो वेरिएबल हैं, "ईमेल" और "पासवर्ड," जो हमारे व्यू लेयर को दर्शाते हैं।
- जब उपयोगकर्ता ईमेल और पासवर्ड दर्ज करके सबमिट पर क्लिक करता है, तो यह कार्रवाई Mvc_servlet को भेज दी जाती है, जहां ईमेल और पासवर्ड पास किए जाते हैं।
- Mvc_servlet कंट्रोलर लेयर है। Mvc_servlet में, अनुरोध बीन ऑब्जेक्ट को भेजा जाता है, जो मॉडल लेयर के रूप में कार्य करता है।
- ईमेल और पासवर्ड के मान बीन में सेट किए जाते हैं और आगे उपयोग के लिए संग्रहीत किए जाते हैं।
- बीन से मान प्राप्त किया जाता है और व्यू लेयर में दिखाया जाता है।
Mvc_example.jsp (व्यू)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>MVC Guru Example</title> </head> <body> <form action="Mvc_servlet" method="POST"> Email: <input type="text" name="email"> <br /> Password: <input type="text" name="password" /> <input type="submit" value="Submit" /> </form> </body> </html>
कोड का स्पष्टीकरण:
परत देखें:
Code पंक्ति 10-15: यहां हम एक फॉर्म ले रहे हैं जिसमें दो फ़ील्ड पैरामीटर के रूप में हैं, "ईमेल" और "पासवर्ड"। इस अनुरोध को Mvc_servlet.java नामक कंट्रोलर को अग्रेषित किया जाना है, जिसे एक्शन एट्रिब्यूट में पास किया गया है। इसे HTTP विधि के माध्यम से भेजा जाता है जो POST है।
Mvc_servlet.java (कंट्रोलर)
package demotest; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Mvc_servlet */ public class Mvc_servlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Mvc_servlet() { super(); // TODO Auto-generated constructor stub } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String email=request.getParameter("email"); String password=request.getParameter("password"); TestBean testobj = new TestBean(); testobj.setEmail(email); testobj.setPassword(password); request.setAttribute("gurubean",testobj); RequestDispatcher rd=request.getRequestDispatcher("mvc_success.jsp"); rd.forward(request, response); } }
कोड का स्पष्टीकरण:
नियंत्रक परत:
Code रेखा 14: Mvc_servlet, HttpServlet का विस्तार है।
Code रेखा 26: क्योंकि उपयोग की जाने वाली विधि POST है, इसलिए अनुरोध सर्वलेट के doPost विधि में प्रवेश करता है, जो अनुरोध को संसाधित करता है और इसे testobj के रूप में बीन ऑब्जेक्ट में सहेजता है।
Code रेखा 34: अनुरोध ऑब्जेक्ट का उपयोग करके, हम "gurubean" विशेषता को सेट कर रहे हैं, जिसे testobj का मान सौंपा गया है।
Code रेखा 35: यहां हम RequestDispatcher ऑब्जेक्ट का उपयोग करके सफलता संदेश को mvc_success.jsp पर अग्रेषित कर रहे हैं।
TestBean.java (मॉडल)
package demotest; import java.io.Serializable; public class TestBean implements Serializable{ public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } private String email="null"; private String password="null"; }
कोड का स्पष्टीकरण:
मॉडल परत:
Code पंक्ति 7-17: इसमें ईमेल और पासवर्ड के गेटर और सेटर शामिल हैं, जो कि TestBean क्लास के सदस्य हैं।
Code पंक्ति 19-20: यह बीन क्लास में स्ट्रिंग प्रकार के सदस्यों के ईमेल और पासवर्ड को परिभाषित करता है।
Mvc_success.jsp (परिणाम दृश्य)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@page import="demotest.TestBean"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Success</title> </head> <body> <% TestBean testguru=(TestBean)request.getAttribute("gurubean"); out.print("Welcome, "+testguru.getEmail()); %> </body> </html>
कोड का स्पष्टीकरण:
Code रेखा 12: हम सर्वरलेट के doPost मेथड में सेट किए गए रिक्वेस्ट ऑब्जेक्ट का उपयोग करके एट्रीब्यूट को रिट्रीव कर रहे हैं।
Code रेखा 13: हम स्वागत संदेश और ईमेल आईडी प्रिंट कर रहे हैं जो बीन ऑब्जेक्ट में सहेजे गए हैं।
उत्पादन
जब आप उपरोक्त कोड निष्पादित करते हैं, तो आपको निम्नलिखित आउटपुट मिलता है:
जब आप mvc_example.jsp खोलते हैं, तो आपको ईमेल और पासवर्ड फ़ील्ड और सबमिट बटन वाला फ़ॉर्म मिलता है।
फॉर्म में ईमेल और पासवर्ड दर्ज करने के बाद सबमिट पर क्लिक करें:
सबमिट पर क्लिक करने के बाद, आउटपुट नीचे दिखाए अनुसार प्रदर्शित होता है:
जब आप स्क्रीन पर ईमेल और पासवर्ड दर्ज करके सबमिट पर क्लिक करते हैं, तो ये विवरण TestBean में सहेजे जाते हैं। TestBean से ही इन्हें अगली स्क्रीन पर सफलता संदेश प्रदर्शित करने के लिए प्राप्त किया जाता है। JSP डेटा प्रस्तुत करने और व्यू प्रदान करने की भूमिका निभाता है, जबकि सर्वलेट कंट्रोलर और व्यू प्रदान करने का काम करता है। Javaबीन मॉडल के रूप में कार्य करता है। मुख्य व्यावसायिक तर्क मॉडल परत में समाहित है।


