जकार्ता सर्वलेट

From Vigyanwiki
Original author(s)Pavni Diwanji
Developer(s)Eclipse Foundation
Initial releaseDecember 1996; 27 years ago (1996-12)
Stable release
6.0 / May 31, 2022; 2 years ago (2022-05-31)
Written inJava
PlatformJakarta EE
Size2.56 MB
TypeSoftware component for Web API
LicenseEclipse Public License
Websitejakarta.ee/specifications/servlet/
JavaServer पेज फ़ाइल का जीवन

जकार्ता सर्वलेट (पूर्व में जावा सर्वलेट) एक जावा सॉफ्टवेयर घटक है जो सर्वर की क्षमताओं का विस्तार करता है। हालांकि सर्वलेट्स कई प्रकार के अनुरोधों का जवाब दे सकते हैं, वे वेब सर्वर पर वेब अनुप्रयोगों को होस्ट करने के लिए आमतौर पर वेब कंटेनरों को लागू करते हैं और इस प्रकार सर्वर-साइड सर्वलेट वेब एपीआई के रूप में अर्हता प्राप्त करते हैं। ऐसे वेब सर्वलेट PHP और ASP.NET जैसी अन्य गतिशील वेब सामग्री प्रौद्योगिकियों के जावा समकक्ष हैं।

परिचय

जकार्ता सर्वलेट जकार्ता ईई में एक जावा क्लास को प्रोसेस या स्टोर करता है जो जकार्ता सर्वलेट एपीआई के अनुरूप है,[1] जावा क्लासेस को लागू करने के लिए एक मानक है जो अनुरोधों का जवाब देता है। सिद्धांत रूप में सर्वलेट्स किसी भी क्लाइंट-सर्वर प्रोटोकॉल पर संचार कर सकते हैं, लेकिन वे अक्सर एचटीटीपी के साथ उपयोग किए जाते हैं। इस प्रकार "सर्वलेट" को अक्सर "एचटीटीपी सर्वलेट" के लिए आशुलिपि के रूप में प्रयोग किया जाता है।[2] इस प्रकार, एक सॉफ्टवेयर डेवलपर जावा प्लेटफॉर्म का उपयोग करके वेब सर्वर में गतिशील सामग्री जोड़ने के लिए एक सर्वलेट का उपयोग कर सकता है। उत्पन्न सामग्री आमतौर पर एचटीएमएल है, लेकिन अन्य डेटा जैसे एक्सएमएल और अधिक सामान्यतः JSON हो सकती है। सर्वलेट एचटीटीपी कुकीज़, या यूआरएल मैपिंग का उपयोग करके कई सर्वर लेन-देन में सत्र चर में स्थिति बनाए रख सकते हैं।

जकार्ता सर्वलेट एपीआई, कुछ हद तक, वेब सेवाओं के लिए दो मानक जावा प्रौद्योगिकियों द्वारा अधिगृहीत की गई है:

  • जकार्ता रेस्टफुल वेब सर्विसेज (JAX-RS 2.0) AJAX, JSON और REST सेवाओं के लिए उपयोगी, और
  • जकार्ता XML वेब सर्विसेज (JAX-WS) SOAP वेब सर्विसेज के लिए उपयोगी है।

सर्वलेट को तैनात करने और चलाने के लिए, एक वेब कंटेनर का उपयोग किया जाना चाहिए। एक वेब कंटेनर (सर्वलेट कंटेनर के रूप में भी जाना जाता है) अनिवार्य रूप से एक वेब सर्वर का घटक है जो सर्वलेट्स के साथ इंटरैक्ट करता है। वेब कंटेनर सर्वलेट्स के जीवनचक्र को प्रबंधित करने, किसी विशेष सर्वलेट के लिए URL मैप करने और यह सुनिश्चित करने के लिए ज़िम्मेदार है कि URL अनुरोधकर्ता के पास सही पहुँच अधिकार हैं।

जावा पैकेज पदानुक्रम जावैक्स.सर्वलेट में निहित सर्वलेट एपीआई, वेब कंटेनर और एक सर्वलेट की अपेक्षित बातचीत को परिभाषित करता है।[2]

एक सर्वलेट एक वस्तु है जो अनुरोध प्राप्त करती है और उस अनुरोध के आधार पर प्रतिक्रिया उत्पन्न करती है। मूल सर्वलेट पैकेज जावा ऑब्जेक्ट्स को सर्वलेट अनुरोधों और प्रतिक्रियाओं का प्रतिनिधित्व करने के साथ-साथ सर्वलेट के विन्यास पैरामीटर और निष्पादन पर्यावरण को प्रतिबिंबित करने के लिए परिभाषित करता है। पैकेज javax.servlet.http सामान्य सर्वलेट तत्वों के HTTP-विशिष्ट उपवर्गों को परिभाषित करता है, जिसमें सत्र प्रबंधन ऑब्जेक्ट शामिल हैं जो वेब सर्वर और क्लाइंट के बीच कई अनुरोधों और प्रतिक्रियाओं को ट्रैक करते हैं। सर्वलेट्स को WAR फ़ाइल में वेब एप्लिकेशन के रूप में पैक किया जा सकता है।

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

इतिहास

जावा सर्वलेट एपीआई की पहली सार्वजनिक घोषणा मई 1996 में उद्घाटन जावावन सम्मेलन में की गई थी।[3][4] सम्मेलन में घोषणाओं के लगभग दो महीने बाद, जावासॉफ्ट वेबसाइट पर पहला सार्वजनिक कार्यान्वयन उपलब्ध कराया गया था। यह जावा वेब सर्वर (JWS; तब इसके कोडनेम जीव्स द्वारा जाना जाता था) का पहला अल्फा था[5] जिसे अंततः 5 जून, 1997 को एक उत्पाद के रूप में भेज दिया जाएगा।[6]

Java.net पर अपने ब्लॉग में सन दिग्गज और ग्लासफिश के प्रमुख जिम ड्रिस्कॉल ने सर्वलेट प्रौद्योगिकी के इतिहास का विवरण दिया है।[7] जेम्स गोस्लिंग ने पहली बार जावा के शुरुआती दिनों में सर्वलेट्स के बारे में सोचा था, लेकिन यह अवधारणा दिसंबर 1996 तक एक उत्पाद नहीं बन पाई जब सन ने जेडब्ल्यूएस को भेज दिया। [8][9][10] यह पहले था जो अब जकार्ता ईई को एक विनिर्देश में बनाया गया था।

सर्वलेट1 विनिर्देश पावनी दीवानजी द्वारा बनाया गया था[11][12] जब उसने सन माइक्रोसिस्टम्स में काम किया, जून 1997 में संस्करण 1.0 को अंतिम रूप दिया गया। संस्करण 2.2 के साथ शुरू करते हुए, विनिर्देश जावा सामुदायिक प्रक्रिया के तहत विकसित किया गया था।

Servlet API history
Servlet API version Released Specification Platform Important Changes
Jakarta Servlet 6.0 May 31, 2022 6.0 Jakarta EE 10 remove deprecated features and implement requested enhancements
Jakarta Servlet 5.0 Oct 9, 2020 5.0 Jakarta EE 9 API moved from package javax.servlet to jakarta.servlet
Jakarta Servlet 4.0.3 Sep 10, 2019 4.0 Jakarta EE 8 Renamed from "Java" trademark
Java Servlet 4.0 Sep 2017 JSR 369 Java EE 8 HTTP/2
Java Servlet 3.1 May 2013 JSR 340 Java EE 7 Non-blocking I/O, HTTP protocol upgrade mechanism (WebSocket)[13]
Java Servlet 3.0 December 2009 JSR 315 Java EE 6, Java SE 6 Pluggability, Ease of development, Async Servlet, Security, File Uploading
Java Servlet 2.5 September 2005 JSR 154 Java EE 5, Java SE 5 Requires Java SE 5, supports annotation
Java Servlet 2.4 November 2003 JSR 154 J2EE 1.4, J2SE 1.3 web.xml uses XML Schema
Java Servlet 2.3 August 2001 JSR 53 J2EE 1.3, J2SE 1.2 Addition of Filter
Java Servlet 2.2 August 1999 JSR 902, JSR 903 J2EE 1.2, J2SE 1.2 Becomes part of J2EE, introduced independent web applications in .war files
Java Servlet 2.1 November 1998 2.1a Unspecified First official specification, added RequestDispatcher, ServletContext
Java Servlet 2.0 December 1997 JDK 1.1 Part of April 1998 Java Servlet Development Kit 2.0[14]
Java Servlet 1.0 December 1996 Part of June 1997 Java Servlet Development Kit (JSDK) 1.0[8]

सर्वलेट का जीवन चक्र

सर्वलेट के जीवन चक्र के लिए तीन विधियाँ केंद्रीय हैं। ये init(), service(), और destroy(). वे प्रत्येक सर्वलेट द्वारा कार्यान्वित किए जाते हैं और सर्वर द्वारा विशिष्ट समय पर लागू किए जाते हैं।

  • सर्वलेट ऑब्जेक्ट जीवनकाल के प्रारंभिक चरण के दौरान, वेब कंटेनर पर कॉल करके सर्वलेट उदाहरण को प्रारंभ करता है। init() विधि, को लागू करने वाली वस्तु को पारित करना javax.servlet.ServletConfig इंटरफेस। यह कॉन्फ़िगरेशन ऑब्जेक्ट सर्वलेट को वेब एप्लिकेशन से विशेषता-मूल्य जोड़ी | नाम-मूल्य आरंभीकरण मापदंडों तक पहुंचने की अनुमति देता है।
  • आरंभीकरण के बाद, सर्वलेट उदाहरण क्लाइंट अनुरोधों को पूरा कर सकता है। प्रत्येक HTTP अनुरोध # अनुरोध संदेश को अपने अलग थ्रेड में सेवित किया जाता है। वेब कंटेनर कॉल करता है service() प्रत्येक अनुरोध के लिए सर्वलेट की विधि। service() ई> विधि अनुरोध के प्रकार को निर्धारित करती है और अनुरोध को संभालने के लिए उपयुक्त विधि को भेजती है। सर्वलेट के विकासकर्ता को इन विधियों के लिए कार्यान्वयन प्रदान करना चाहिए। यदि किसी ऐसी विधि के लिए अनुरोध किया जाता है जो सर्वलेट द्वारा लागू नहीं की जाती है, तो मूल वर्ग की विधि को कहा जाता है, जिसके परिणामस्वरूप आमतौर पर अनुरोधकर्ता को त्रुटि वापस आ जाती है।
  • अंत में, वेब कंटेनर कॉल करता है destroy() विधि जो सर्वलेट को सेवा से बाहर ले जाती है। destroy() ई> विधि, जैसे init()सर्वलेट के जीवन चक्र में केवल एक बार कॉल किया जाता है।

निम्नलिखित इन विधियों का एक विशिष्ट उपयोगकर्ता परिदृश्य है।

  1. मान लें कि एक उपयोगकर्ता एक समान संसाधन लोकेटर पर जाने का अनुरोध करता है।
    • ब्राउज़र तब इस URL के लिए एक HTTP अनुरोध उत्पन्न करता है।
    • यह अनुरोध तब उपयुक्त सर्वर को भेजा जाता है।
  2. HTTP अनुरोध वेब सर्वर द्वारा प्राप्त किया जाता है और सर्वलेट कंटेनर को अग्रेषित किया जाता है।
    • कंटेनर इस अनुरोध को एक विशेष सर्वलेट में मैप करता है।
    • सर्वलेट को गतिशील रूप से पुनर्प्राप्त किया जाता है और कंटेनर के पता स्थान में लोड किया जाता है।
  3. कंटेनर आह्वान करता है init() सर्वलेट की विधि।
    • यह विधि तभी शुरू की जाती है जब सर्वलेट को पहली बार मेमोरी में लोड किया जाता है।
    • सर्वलेट को इनिशियलाइज़ेशन पैरामीटर पास करना संभव है ताकि वह खुद को कॉन्फ़िगर कर सके।
  4. कंटेनर आह्वान करता है service() सर्वलेट की विधि।
    • HTTP अनुरोध को संसाधित करने के लिए इस विधि को कहा जाता है।
    • सर्वलेट HTTP अनुरोध में प्रदान किए गए डेटा को पढ़ सकता है।
    • सर्वलेट क्लाइंट के लिए HTTP प्रतिक्रिया भी तैयार कर सकता है।
  5. सर्वलेट कंटेनर के एड्रेस स्पेस में रहता है और क्लाइंट से प्राप्त किसी अन्य HTTP अनुरोध को संसाधित करने के लिए उपलब्ध होता है।
    • service() ई> विधि प्रत्येक HTTP अनुरोध के लिए कहा जाता है।
  6. कंटेनर, किसी बिंदु पर, सर्वलेट को उसकी मेमोरी से अनलोड करने का निर्णय ले सकता है।
    • एल्गोरिदम जिसके द्वारा यह निर्णय लिया जाता है, प्रत्येक कंटेनर के लिए विशिष्ट होता है।
  7. कंटेनर सर्वलेट्स को कॉल करता है destroy() सर्वलेट के लिए आवंटित फ़ाइल हैंडल जैसे किसी भी संसाधन को छोड़ने की विधि; महत्वपूर्ण डेटा को लगातार स्टोर में सहेजा जा सकता है।
  8. सर्वलेट और उसकी वस्तुओं के लिए आवंटित मेमोरी को तब कचरा एकत्र किया जा सकता है।

उदाहरण

निम्न उदाहरण सर्वलेट कितनी बार प्रिंट करता है service() विधि कहा जाता था।

ध्यान दें कि HttpServlet का एक उपवर्ग है GenericServlet, का कार्यान्वयन Servlet इंटरफेस। service() ई> की विधि HttpServlet वर्ग तरीकों के लिए अनुरोध भेजता है doGet(), doPost(), doPut(), doDelete(), और इसी तरह; HTTP अनुरोध के अनुसार। नीचे दिए गए उदाहरण में service() अधिलेखित है और यह भेद नहीं करता है कि यह कौन सी HTTP अनुरोध विधि प्रदान करता है। <वाक्यविन्यास प्रकाश लैंग = जावा> आयात java.io.IOException;

आयात jakarta.servlet.ServletConfig; आयात jakarta.servlet.ServletException; आयात jakarta.servlet.http.HttpServlet; आयात jakarta.servlet.http.HttpServletRequest; आयात jakarta.servlet.http.HttpServletResponse;

सार्वजनिक वर्ग ServletLifeCycleExample HttpServlet { का विस्तार करता है

   निजी पूर्णांक साझा काउंटर;
   @Override
   सार्वजनिक शून्य init (अंतिम ServletConfig कॉन्फ़िगरेशन) ServletException फेंकता है {
       सुपर.इनिट (विन्यास);
       getServletContext ()। लॉग (init () कहा जाता है);
       साझा काउंटर = 0;
   }
   @Override
   संरक्षित शून्य सेवा (अंतिम HttpServletRequest अनुरोध, अंतिम HttpServletResponse प्रतिक्रिया) ServletException फेंकता है, IOException {
       getServletContext ()। लॉग (सेवा () कहा जाता है);
       इंट लोकल काउंटर;
       सिंक्रनाइज़ (साझा काउंटर) {
           साझा काउंटर ++;
           स्थानीय काउंटर = साझा काउंटर;
       }
       प्रतिक्रिया.getWriter().लिखना (गिनती को + स्थानीय काउंटर तक बढ़ाना); // एक स्थानीय चर का उपयोग
   }
   @Override
   सार्वजनिक शून्य नष्ट () {
       getServletContext ()। लॉग (नष्ट () कहा जाता है);
   }

} </वाक्यविन्यास हाइलाइट>

कंटेनर सर्वर

सर्वलेट तकनीक के विनिर्देश कई उत्पादों में लागू किए गए हैं। वेब कंटेनर पेज पर क्रियान्वयन की सूची देखें।

अन्य प्रकार के सर्वलेट कंटेनर भी हैं जैसे एसआईपी सर्वलेट्स के लिए, उदाहरण के लिए, सेलफिन

संदर्भ

  1. "Servlet (Java(TM) EE 7 Specification APIs)". oracle.com. Retrieved 2018-07-25.
  2. 2.0 2.1 "Servlet Essentials - Chapter 1". novocode.com. Archived from the original on 2017-12-18.
  3. Freedman, Matt (June 26, 1996). "JavaOne conference report". JavaWorld.
  4. Diwanji, Pavani; Connelly, Dave; Wagle, Prasad (May 29, 1996). "Java Server and Servlets" (PDF). Servers and Server Extensions. JavaOne 1996. Archived (PDF) from the original on 2000-08-16. Retrieved 2020-02-01.
  5. Chang, Phil Inje (July 1, 1997). "Interview: The Java Web Server team gives you the skinny". JavaWorld. Retrieved 2018-07-25.
  6. Chang, Phil Inje (June 1, 1997). "Java Web Server ships!". JavaWorld. Retrieved 2018-07-25.
  7. "Servlet History | community.oracle.com". Weblogs.java.net. 2005-12-10. Retrieved 2013-06-14.
  8. 8.0 8.1 Hunter, Jason (March 2000). "Servlet Timeline". Beyond Java Servlet Programming. O'Reilly Conference on Java. O'Reilly Media.
  9. "Java Web Server". Javasoft. Sun Microsystems. Archived from the original on 1998-01-11. Retrieved 2020-02-01.
  10. "Java Web Server(tm)". Sun Microsystems. Archived from the original on 2002-02-06. Retrieved 2020-02-01.
  11. "Pavni Diwanji". Family Online Safety Institute. Retrieved 12 November 2016.
  12. US patent 5928323, Gosling, James A.; Diwanji, Pavni & Connelly, David W., "Apparatus and method for dynamically generating information with server-side software objects", published 1999-07-27, issued 1999-07-27, assigned to Sun Microsystems 
  13. "What's new in Servlet 3.1 ? - Java EE 7 moving forward (Arun Gupta, Miles to go ...)". oracle.com. Retrieved 22 November 2016.
  14. Crawford, William; Hunter, Jason (November 1998). "Preface". Java Servlet Programming (1st ed.). O'Reilly Media. p. ix–x. ISBN 978-1-56592-391-1. We cover Version 2.0 of the Servlet API, which was introduced as part of the Java Web Server 1.1 in December 1997 and clarified by the release of the Java Servlet Development Kit 2.0 in April 1998.


बाहरी संबंध

  • No URL found. Please specify a URL here or add one to Wikidata.
  • Servlets.com