स्प्रिंग - एमवीसी फ्रेमवर्क
स्प्रिंग वेब एमवीसी ढांचा मॉडल-व्यू-कंट्रोलर (एमवीसी) आर्किटेक्चर और तैयार घटकों को प्रदान करता है जिनका उपयोग लचीला और शिथिल युग्मित वेब अनुप्रयोगों को विकसित करने के लिए किया जा सकता है। MVC पैटर्न इन तत्वों के बीच एक ढीली युग्मन प्रदान करते हुए एप्लिकेशन के विभिन्न पहलुओं (इनपुट लॉजिक, बिजनेस लॉजिक और UI लॉजिक) को अलग करता है।
Model अनुप्रयोग डेटा को एन्क्रिप्ट करता है और सामान्य तौर पर वे POJO से मिलकर बनते हैं।
View मॉडल डेटा रेंडर करने के लिए जिम्मेदार है और सामान्य तौर पर यह HTML आउटपुट उत्पन्न करता है जो क्लाइंट के ब्राउज़र की व्याख्या कर सकता है।
Controller उपयोगकर्ता के अनुरोधों को संसाधित करने और एक उपयुक्त मॉडल बनाने के लिए जिम्मेदार है और इसे प्रतिपादन के लिए दृश्य में भेजता है।
डिस्पैचरसर्वलेट
स्प्रिंग वेब मॉडल-व्यू-कंट्रोलर (MVC) फ्रेमवर्क एक डिस्पैचरसर्वलेट के आसपास डिज़ाइन किया गया है जो सभी HTTP अनुरोधों और प्रतिक्रियाओं को संभालता है। स्प्रिंग वेब एमवीसी डिस्पैचर सेलेट के अनुरोध प्रसंस्करण वर्कफ़्लो को निम्नलिखित चित्र में चित्रित किया गया है -
DispatcherServlet पर आने वाले HTTP अनुरोध के अनुरूप घटनाओं का क्रम निम्न है -
HTTP अनुरोध प्राप्त करने के बाद, DispatcherServlet उपयुक्त नियंत्रक को कॉल करने के लिए हैंडलर मैपिंग को सलाह देता है ।
नियंत्रक अनुरोध लेता है और इस्तेमाल किया GET या POST पद्धति के आधार पर उपयुक्त सेवा तरीकों कहता है। सेवा विधि परिभाषित व्यापार तर्क के आधार पर मॉडल डेटा सेट हो जाएगा और रिटर्न के लिए नाम देखने DispatcherServlet ।
DispatcherServlet से मदद ले जाएगा ViewResolver अनुरोध के लिए निर्धारित दृश्य पिक करने के लिए।
एक बार दृश्य को अंतिम रूप दिए जाने के बाद, द डिस्पैचरसर्वलेट मॉडल डेटा को उस दृश्य में भेजता है जो अंततः ब्राउज़र पर प्रदान किया जाता है।
सभी उपर्युक्त घटकों, यानी HandlerMapping, नियंत्रक, और ViewResolver के हिस्से हैं WebApplicationContext w जो सादा का ही विस्तार है ApplicationContext कुछ अतिरिक्त के साथ वेब अनुप्रयोगों के लिए आवश्यक सुविधा है।
आवश्यक कॉन्फ़िगरेशन
आपको URL मैपिंग का उपयोग करके डिस्पैचरसर्वलेट को हैंडल करने के लिए अनुरोध करने की आवश्यकता हैweb.xmlफ़ाइल। निम्नलिखित के लिए घोषणा और मानचित्रण दिखाने के लिए एक उदाहरण हैHelloWeb डिस्पैचर सेलेट उदाहरण -
<web-app id = "WebApp_ID" version = "2.4"
xmlns = "http://java.sun.com/xml/ns/j2ee"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Spring MVC Application</display-name>
<servlet>
<servlet-name>HelloWeb</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWeb</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
</web-app>
web.xmlफ़ाइल को आपके वेब एप्लिकेशन के WebContent / WEB-INF निर्देशिका में रखा जाएगा। के आरंभ होने परHelloWeb DispatcherServlet, रूपरेखा नाम की फ़ाइल से एप्लिकेशन संदर्भ को लोड करने का प्रयास करेगी [servlet-name]-servlet.xmlअनुप्रयोग के WebContent / WEB-INFdirectory में स्थित है। इस मामले में, हमारी फाइल होगीHelloWebservlet.xml।
अगला, <सर्वलेट-मैपिंग> टैग इंगित करता है कि कौन से URL कौन से DispatcherServlet द्वारा नियंत्रित किए जाएंगे। यहां सभी HTTP अनुरोध समाप्त हो रहे हैं.jsp द्वारा नियंत्रित किया जाएगा HelloWeb DispatcherServlet।
आप के रूप में डिफ़ॉल्ट फ़ाइल नाम के साथ जाने के लिए नहीं करना चाहते हैं [सर्वलेट-नाम] -servlet.xml के रूप में और डिफ़ॉल्ट स्थान WebContent / वेब-INF , आप श्रोता सर्वलेट जोड़कर इस फ़ाइल नाम और स्थान को अनुकूलित कर सकते ContextLoaderListener अपने web.xml फ़ाइल में निम्नानुसार है -
<web-app...>
<!-------- DispatcherServlet definition goes here----->
....
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/HelloWeb-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
अब, हम के लिए आवश्यक विन्यास की जाँच करें HelloWeb-servlet.xmlफ़ाइल, आपके वेब एप्लिकेशन के वेबकंट / WEB-INF निर्देशिका में रखी गई -
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:context = "http://www.springframework.org/schema/context"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package = "com.tutorialspoint" />
<bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name = "prefix" value = "/WEB-INF/jsp/" />
<property name = "suffix" value = ".jsp" />
</bean>
</beans>
निम्नलिखित महत्वपूर्ण बिंदु हैं HelloWeb-servlet.xml फ़ाइल -
[सर्वलेट-नाम] -servlet.xml फ़ाइल वैश्विक क्षेत्र में एक ही नाम के साथ परिभाषित किसी भी सेम की परिभाषा अधिभावी, सेम परिभाषित बनाने के लिए इस्तेमाल किया जाएगा।
<संदर्भ: घटक स्कैन ...> टैग को सक्रिय वसंत MVC एनोटेशन स्कैनिंग क्षमता जो @Controller और @RequestMapping आदि जैसे एनोटेशन का उपयोग करने के लिए अनुमति देता है के लिए उपयोग किया जाएगा
InternalResourceViewResolver दृश्य नामों को हल करने परिभाषित नियमों होगा। उपरोक्त परिभाषित नियम के अनुसार, एक तार्किक दृश्य जिसका नाम हैhello/WEB-INF/jsp/hello.jsp पर स्थित दृश्य कार्यान्वयन के लिए प्रत्यायोजित किया जाता है ।
निम्न अनुभाग आपको दिखाएगा कि आपके वास्तविक घटक, अर्थात, नियंत्रक, मॉडल और दृश्य कैसे बनाएं।
एक नियंत्रक को परिभाषित करना
DispatcherServlet विनियामकों को अनुरोध करता है कि वे इसके लिए विशिष्ट कार्यक्षमता को निष्पादित करें। @Controllerएनोटेशन इंगित करता है कि एक विशेष वर्ग एक नियंत्रक की भूमिका निभाता है। @RequestMapping एनोटेशन का उपयोग URL को पूरी कक्षा या किसी विशेष हैंडलर विधि के लिए मैप करने के लिए किया जाता है।
@Controller
@RequestMapping("/hello")
public class HelloController {
@RequestMapping(method = RequestMethod.GET)
public String printHello(ModelMap model) {
model.addAttribute("message", "Hello Spring MVC Framework!");
return "hello";
}
}
@Controllerएनोटेशन एक वर्ग MVC नियंत्रक के रूप में परिभाषित करता है। यहाँ, का पहला उपयोग@RequestMapping इंगित करता है कि इस नियंत्रक पर सभी हैंडलिंग विधियों के सापेक्ष हैं /helloपथ। अगला एनोटेशन@RequestMapping(method = RequestMethod.GET)HTTP GET अनुरोध को संभालने के लिए नियंत्रक की डिफ़ॉल्ट सेवा विधि के रूप में aprintHello () विधि की घोषणा करने के लिए उपयोग किया जाता है। आप एक ही URL पर किसी भी POST अनुरोध को संभालने के लिए दूसरी विधि को परिभाषित कर सकते हैं।
आप उपरोक्त नियंत्रक को दूसरे रूप में लिख सकते हैं जहाँ आप @RequestMapping में अतिरिक्त विशेषताएँ जोड़ सकते हैं -
@Controller
public class HelloController {
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String printHello(ModelMap model) {
model.addAttribute("message", "Hello Spring MVC Framework!");
return "hello";
}
}
value विशेषता उस URL को इंगित करती है जिससे हैंडलर विधि मैप की गई है और methodविशेषता HTTP GET अनुरोध को संभालने के लिए सेवा पद्धति को परिभाषित करता है। ऊपर दिए गए नियंत्रक के बारे में निम्नलिखित महत्वपूर्ण बिंदुओं पर ध्यान दिया जाना चाहिए -
आप एक सेवा पद्धति के अंदर आवश्यक व्यावसायिक तर्क को परिभाषित करेंगे। आप आवश्यकता के अनुसार इस विधि के अंदर एक और विधि कह सकते हैं।
परिभाषित व्यापार तर्क के आधार पर, आप इस पद्धति के भीतर एक मॉडल बनाएंगे। आप अलग-अलग मॉडल विशेषताओं का उपयोग कर सकते हैं और अंतिम परिणाम पेश करने के लिए इन विशेषताओं को एक्सेस किया जाएगा। यह उदाहरण इसकी विशेषता "संदेश" के साथ एक मॉडल बनाता है।
एक परिभाषित सेवा पद्धति एक स्ट्रिंग लौटा सकती है, जिसमें का नाम शामिल है viewमॉडल प्रस्तुत करने के लिए उपयोग किया जाना है। यह उदाहरण तार्किक दृश्य नाम के रूप में "हैलो" देता है।
JSP व्यूज बनाना
स्प्रिंग एमवीसी विभिन्न प्रस्तुति प्रौद्योगिकियों के लिए कई प्रकार के विचारों का समर्थन करता है। इनमें शामिल हैं - जेएसपी, एचटीएमएल, पीडीएफ, एक्सेल वर्कशीट, एक्सएमएल, वेलोसिटी टेम्प्लेट, एक्सएसएलटी, जेएसएन, एटम और आरएसएस फीड, जैस्परपरपोर्ट्स आदि। लेकिन ज्यादातर हम जेएसटीएल के साथ लिखे जेएसपी टेम्प्लेट का उपयोग करते हैं।
हमें एक सरल लिखना है hello /WEB-INF/hello/hello.jsp में देखें -
<html>
<head>
<title>Hello Spring MVC</title>
</head>
<body>
<h2>${message}</h2>
</body>
</html>
यहाँ ${message}वह विशेषता है जो हमने नियंत्रक के अंदर स्थापित की है। आपके पास अपने दृश्य के अंदर प्रदर्शित करने के लिए कई गुण हो सकते हैं।
स्प्रिंग वेब एमवीसी फ्रेमवर्क उदाहरण
उपरोक्त अवधारणाओं के आधार पर, आइए हम कुछ महत्वपूर्ण उदाहरणों की जाँच करें जो आपको अपने स्प्रिंग वेब एप्लिकेशन बनाने में मदद करेंगे -
अनु क्रमांक। | उदाहरण और विवरण |
---|---|
1 | स्प्रिंग एमवीसी हैलो वर्ल्ड उदाहरण यह उदाहरण बताएगा कि एक सरल स्प्रिंग वेब हैलो वर्ल्ड एप्लिकेशन कैसे लिखना है। |
2 | स्प्रिंग एमवीसी फॉर्म हैंडलिंग उदाहरण यह उदाहरण समझाएगा कि नियंत्रक को डेटा जमा करने और संसाधित परिणाम प्रदर्शित करने के लिए HTML रूपों का उपयोग करके स्प्रिंग वेब एप्लिकेशन कैसे लिखना है। |
3 | स्प्रिंग पेज पुनर्निर्देशन उदाहरण स्प्रिंग एमवीसी फ्रेमवर्क में पेज पुनर्निर्देशन कार्यक्षमता का उपयोग करना सीखें। |
4 | स्प्रिंग स्टेटिक पेज उदाहरण स्प्रिंग एमवीसी फ्रेमवर्क में डायनेमिक पेजों के साथ-साथ स्टैटिक पेजों तक पहुंचने का तरीका जानें। |
5 | स्प्रिंग एक्सेप्शन हैंडलिंग उदाहरण स्प्रिंग एमवीसी फ्रेमवर्क में अपवादों को संभालना सीखें। |