जकार्ता सर्वलेट: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(9 intermediate revisions by 5 users not shown)
Line 4: Line 4:
| logo =  
| logo =  
| logo_size =  
| logo_size =  
| author = [[Pavni Diwanji]]
| author = [[पावनी दीवान जी]]
| developer = [[Eclipse Foundation]]
| developer = [[एक्लिप्स फाउंडेशन]]
| released = {{Start date and age|1996|12}}
| released = {{Start date and age|1996|12}}
| ver layout = simple
| ver layout = simple
Line 11: Line 11:
| latest release date = {{Start date and age|2022|5|31}}
| latest release date = {{Start date and age|2022|5|31}}
| latest preview version =  
| latest preview version =  
| programming language = [[Java (programming language)|Java]]
| programming language = [[जावा (प्रोग्रामिंग भाषा)|जावा]]
| operating system =  
| operating system =  
| platform = [[Jakarta EE]]
| platform = [[Jakarta EE]]
| size = 2.56 MB
| size = 2.56 MB
| genre = [[Software component]] for [[Web API]]
| genre = [[सॉफ्टवेयर घटक]] [[वेब एपीआई]] के लिए
| language count =  
| language count =  
| license = [[Eclipse Public License]]
| license = [[एक्लिप्स पब्लिक लाइसेंस]]
| website = {{URL|https://jakarta.ee/specifications/servlet/}}
| website = {{URL|https://jakarta.ee/specifications/servlet/}}
}}
}}


[[File:JSPLife.png|thumb|400px|JavaServer पेज फ़ाइल का जीवन]]जकार्ता सर्वलेट (पूर्व में जावा सर्वलेट) एक [[जावा (प्रोग्रामिंग भाषा)|जावा]] [[सॉफ्टवेयर घटक]] है जो [[सर्वर (कंप्यूटिंग)|सर्वर]] की क्षमताओं का विस्तार करता है। हालांकि सर्वलेट्स कई प्रकार के अनुरोधों का जवाब दे सकते हैं, वे [[वेब सर्वर]] पर वेब अनुप्रयोगों को होस्ट करने के लिए आमतौर पर वेब कंटेनरों को लागू करते हैं और इस प्रकार सर्वर-साइड सर्वलेट [[वेब एपीआई]] के रूप में अर्हता प्राप्त करते हैं। ऐसे वेब सर्वलेट PHP और ASP.NET जैसी अन्य गतिशील वेब सामग्री प्रौद्योगिकियों के [[जावा (सॉफ्टवेयर प्लेटफॉर्म)|जावा]] समकक्ष हैं।
[[File:JSPLife.png|thumb|400px|जावा सर्वर पेज फ़ाइल का जीवन]]'''जकार्ता सर्वलेट''' (पूर्व में जावा सर्वलेट) एक [[जावा (प्रोग्रामिंग भाषा)|जावा]] [[सॉफ्टवेयर घटक]] है जो [[सर्वर (कंप्यूटिंग)|सर्वर]] की क्षमताओं का विस्तार करता है। हालांकि सर्वलेट्स कई प्रकार के अनुरोधों का जवाब दे सकते हैं, वे [[वेब सर्वर]] पर वेब अनुप्रयोगों को होस्ट करने के लिए सामान्यतः वेब कंटेनरों को लागू करते हैं और इस प्रकार सर्वर-साइड सर्वलेट [[वेब एपीआई]] के रूप में अर्हता प्राप्त करते हैं। ऐसे वेब सर्वलेट PHP और ASP.NET जैसी अन्य गतिशील वेब सामग्री प्रौद्योगिकियों के [[जावा (सॉफ्टवेयर प्लेटफॉर्म)|जावा]] समकक्ष हैं।


== परिचय ==
== परिचय ==
जकार्ता सर्वलेट [[जकार्ता ी|जकार्ता]] ईई में एक जावा क्लास को प्रोसेस या स्टोर करता है जो जकार्ता सर्वलेट एपीआई के अनुरूप है,<ref>{{cite web|url=https://docs.oracle.com/javaee/7/api/javax/servlet/Servlet.html |title=Servlet (Java(TM) EE 7 Specification APIs)|work=oracle.com|access-date=2018-07-25}}</ref> जावा क्लासेस को लागू करने के लिए एक मानक है जो अनुरोधों का जवाब देता है। सिद्धांत रूप में सर्वलेट्स किसी भी क्लाइंट-सर्वर प्रोटोकॉल पर संचार कर सकते हैं, लेकिन वे अक्सर एचटीटीपी के साथ उपयोग किए जाते हैं। इस प्रकार "सर्वलेट" को अक्सर "एचटीटीपी सर्वलेट" के लिए आशुलिपि के रूप में प्रयोग किया जाता है।<ref name="r1">{{cite web |url=http://www.novocode.com/doc/servlet-essentials/chapter1.html |title=Servlet Essentials - Chapter 1 |work=novocode.com |archive-url=https://web.archive.org/web/20171218173656/http://www.novocode.com/doc/servlet-essentials/chapter1.html |archive-date=2017-12-18}}</ref> इस प्रकार, एक [[सॉफ्टवेयर डेवलपर]] जावा प्लेटफॉर्म का उपयोग करके वेब सर्वर में गतिशील सामग्री जोड़ने के लिए एक सर्वलेट का उपयोग कर सकता है। उत्पन्न सामग्री आमतौर पर एचटीएमएल है, लेकिन अन्य डेटा जैसे एक्सएमएल और अधिक सामान्यतः JSON हो सकती है। सर्वलेट एचटीटीपी कुकीज़, या यूआरएल मैपिंग का उपयोग करके कई सर्वर लेन-देन में सत्र चर में स्थिति बनाए रख सकते हैं।
जकार्ता सर्वलेट [[जकार्ता ी|जकार्ता]] ईई में एक जावा क्लास को प्रोसेस या स्टोर करता है जो जकार्ता सर्वलेट एपीआई के अनुरूप है,<ref>{{cite web|url=https://docs.oracle.com/javaee/7/api/javax/servlet/Servlet.html |title=Servlet (Java(TM) EE 7 Specification APIs)|work=oracle.com|access-date=2018-07-25}}</ref> जावा क्लासेस को लागू करने के लिए एक मानक है जो अनुरोधों का जवाब देता है। सिद्धांत रूप में सर्वलेट्स किसी भी क्लाइंट-सर्वर प्रोटोकॉल पर संचार कर सकते हैं, लेकिन वे अक्सर एचटीटीपी के साथ उपयोग किए जाते हैं। इस प्रकार "सर्वलेट" को अक्सर "एचटीटीपी सर्वलेट" के लिए आशुलिपि के रूप में प्रयोग किया जाता है।<ref name="r1">{{cite web |url=http://www.novocode.com/doc/servlet-essentials/chapter1.html |title=Servlet Essentials - Chapter 1 |work=novocode.com |archive-url=https://web.archive.org/web/20171218173656/http://www.novocode.com/doc/servlet-essentials/chapter1.html |archive-date=2017-12-18}}</ref> इस प्रकार, एक [[सॉफ्टवेयर डेवलपर]] जावा प्लेटफॉर्म का उपयोग करके वेब सर्वर में गतिशील सामग्री जोड़ने के लिए एक सर्वलेट का उपयोग कर सकता है। उत्पन्न सामग्री सामान्यतः एचटीएमएल है, लेकिन अन्य डेटा जैसे एक्सएमएल और अधिक सामान्यतः JSON हो सकती है। सर्वलेट एचटीटीपी कुकीज़, या यूआरएल मैपिंग का उपयोग करके कई सर्वर लेन-देन में सत्र चर में स्थिति बनाए रख सकते हैं।


जकार्ता सर्वलेट एपीआई, कुछ हद तक, वेब सेवाओं के लिए दो मानक जावा प्रौद्योगिकियों द्वारा अधिगृहीत की गई है:
जकार्ता सर्वलेट एपीआई, कुछ हद तक, वेब सेवाओं के लिए दो मानक जावा प्रौद्योगिकियों द्वारा अधिगृहीत की गई है:
Line 35: Line 35:
जावा पैकेज पदानुक्रम जावैक्स.सर्वलेट में निहित सर्वलेट एपीआई, वेब कंटेनर और एक सर्वलेट की अपेक्षित बातचीत को परिभाषित करता है।<ref name=r1 />  
जावा पैकेज पदानुक्रम जावैक्स.सर्वलेट में निहित सर्वलेट एपीआई, वेब कंटेनर और एक सर्वलेट की अपेक्षित बातचीत को परिभाषित करता है।<ref name=r1 />  


A {{Javadoc:EE|javax/servlet|Servlet}} एक [[वस्तु (कंप्यूटर विज्ञान)]] है जो अनुरोध प्राप्त करता है और उस अनुरोध के आधार पर प्रतिक्रिया उत्पन्न करता है। मूल सर्वलेट पैकेज जावा ऑब्जेक्ट्स को सर्वलेट अनुरोधों और प्रतिक्रियाओं का प्रतिनिधित्व करने के साथ-साथ सर्वलेट के कॉन्फ़िगरेशन पैरामीटर और निष्पादन पर्यावरण को प्रतिबिंबित करने के लिए परिभाषित करता है। पैकेज {{Javadoc:EE|package=javax.servlet.http|javax/servlet/http}} सामान्य सर्वलेट तत्वों के [[HTTP]]-विशिष्ट उपवर्गों को परिभाषित करता है, जिसमें सत्र प्रबंधन ऑब्जेक्ट शामिल हैं जो वेब सर्वर और क्लाइंट के बीच कई अनुरोधों और प्रतिक्रियाओं को ट्रैक करते हैं। सर्वलेट्स को वेब एप्लिकेशन के रूप में WAR (फ़ाइल स्वरूप) में पैक किया जा सकता है।
एक सर्वलेट एक वस्तु है जो अनुरोध प्राप्त करती है और उस अनुरोध के आधार पर प्रतिक्रिया उत्पन्न करती है। मूल सर्वलेट पैकेज जावा ऑब्जेक्ट्स को सर्वलेट अनुरोधों और प्रतिक्रियाओं का प्रतिनिधित्व करने के साथ-साथ सर्वलेट के विन्यास पैरामीटर और निष्पादन पर्यावरण को प्रतिबिंबित करने के लिए परिभाषित करता है। पैकेज javax.servlet.http सामान्य सर्वलेट तत्वों के [[HTTP]]-विशिष्ट उपवर्गों को परिभाषित करता है, जिसमें सत्र प्रबंधन ऑब्जेक्ट शामिल हैं जो वेब सर्वर और क्लाइंट के बीच कई अनुरोधों और प्रतिक्रियाओं को ट्रैक करते हैं। सर्वलेट्स को WAR फ़ाइल में वेब एप्लिकेशन के रूप में पैक किया जा सकता है।


[[जकार्ता सर्वर पेज]] कंपाइलर द्वारा जकार्ता सर्वर पेज (JSP) से स्वचालित रूप से सर्वलेट्स उत्पन्न किए जा सकते हैं। सर्वलेट्स और जेएसपी के बीच अंतर यह है कि सर्वलेट्स आमतौर पर जावा कोड के अंदर एचटीएमएल एम्बेड करते हैं, जबकि जेएसपी एचटीएमएल में जावा कोड एम्बेड करते हैं। जबकि एचटीएमएल उत्पन्न करने के लिए सर्वलेट का प्रत्यक्ष उपयोग (जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है) दुर्लभ हो गया है, जकार्ता ईई ([[जकार्ता सर्वर चेहरे]]) में उच्च स्तरीय एमवीसी वेब ढांचा अभी भी निम्न स्तर के अनुरोध/प्रतिक्रिया से निपटने के लिए स्पष्ट रूप से सर्वलेट तकनीक का उपयोग करता है। {{Javadoc:EE|javax/faces/webapp|FacesServlet}}. कुछ पुराना उपयोग [[जेएसपी मॉडल 2 आर्किटेक्चर]] नामक पैटर्न में जेएसपी के संयोजन के साथ सर्वलेट का उपयोग करना है, जो मॉडल-व्यू-कंट्रोलर का स्वाद है।
[[जकार्ता सर्वर पेज]] कंपाइलर द्वारा जकार्ता सर्वर पेज (जेएसपी) से स्वचालित रूप से सर्वलेट्स उत्पन्न किए जा सकते हैं। सर्वलेट्स और जेएसपी के बीच अंतर यह है कि सर्वलेट सामान्यतः जावा कोड के अंदर एचटीएमएल एम्बेड करता है, जबकि जेएसपी एचटीएमएल में जावा कोड एम्बेड करता है। जबकि एचटीएमएल उत्पन्न करने के लिए सर्वलेट्स का प्रत्यक्ष उपयोग (जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है) दुर्लभ हो गया है, जकार्ता ईई (जेएसएफ) में उच्च-स्तरीय एमवीसी वेब फ्रेमवर्क अभी भी स्पष्ट रूप से सर्वलेट तकनीक का उपयोग करता है। फेससर्वलेट के माध्यम से निम्न-स्तरीय अनुरोध/प्रतिक्रिया प्रबंधन के लिए। "मॉडल 2" नामक एक पैटर्न में जेएसपी के संयोजन के साथ सर्वलेट का उपयोग करने के लिए कुछ पुराना उपयोग है, जो मॉडल-व्यू-कंट्रोलर का झुकाव है।


== इतिहास ==
== इतिहास ==
Java Servlet API की पहली सार्वजनिक घोषणा मई 1996 में [[JavaOne]] सम्मेलन के उद्घाटन के दौरान की गई थी।<ref>{{cite news |last1=Freedman |first1=Matt |date=1996-06-26 |df=mdy |title=JavaOne conference report |url=https://www.javaworld.com/article/2077172/java-se/javaone-conference-report.html |website=[[JavaWorld]]}}</ref><ref>{{cite conference |last1=Diwanji |first1=Pavani |last2=Connelly |first2=Dave |last3=Wagle |first3=Prasad |date=1996-05-29 |df=mdy |chapter=Java Server and Servlets |title=Servers and Server Extensions |conference=[[JavaOne]] 1996 |chapter-url=http://java.sun.com:80/javaone/javaone96/pres/ServExt.pdf |archive-url=https://web.archive.org/web/20000816161328/http://java.sun.com/javaone/javaone96/pres/ServExt.pdf |archive-date=2000-08-16 |access-date=2020-02-01 |url-status=live }}</ref> सम्मेलन में घोषणाओं के लगभग दो महीने बाद, पहला सार्वजनिक कार्यान्वयन JavaSoft वेबसाइट पर उपलब्ध कराया गया। यह जावा वेब सर्वर (JWS; तब इसके कोडनेम Jeeves द्वारा जाना जाता है) का पहला अल्फा था।<ref>{{cite news |last1=Chang |first1=Phil Inje | date=1997-07-01 |df=mdy |title=Interview: The Java Web Server team gives you the skinny |url=https://www.javaworld.com/article/2076980/interview--the-java-web-server-team-gives-you-the-skinny.html |website=[[JavaWorld]] |access-date=2018-07-25}}</ref> जिसे अंततः 5 जून, 1997 को एक उत्पाद के रूप में भेज दिया जाएगा।<ref>{{cite news |last1=Chang |first1=Phil Inje | date=1997-06-01 |df=mdy |title=Java Web Server ships! |url=https://www.javaworld.com/article/2076965/java-web-server-ships-.html |website=[[JavaWorld]] |access-date=2018-07-25}}</ref>
जावा सर्वलेट एपीआई की पहली सार्वजनिक घोषणा मई 1996 में उद्घाटन जावावन सम्मेलन में की गई थी।<ref>{{cite news |last1=Freedman |first1=Matt |date=1996-06-26 |df=mdy |title=JavaOne conference report |url=https://www.javaworld.com/article/2077172/java-se/javaone-conference-report.html |website=[[JavaWorld]]}}</ref><ref>{{cite conference |last1=Diwanji |first1=Pavani |last2=Connelly |first2=Dave |last3=Wagle |first3=Prasad |date=1996-05-29 |df=mdy |chapter=Java Server and Servlets |title=Servers and Server Extensions |conference=[[JavaOne]] 1996 |chapter-url=http://java.sun.com:80/javaone/javaone96/pres/ServExt.pdf |archive-url=https://web.archive.org/web/20000816161328/http://java.sun.com/javaone/javaone96/pres/ServExt.pdf |archive-date=2000-08-16 |access-date=2020-02-01 |url-status=live }}</ref> सम्मेलन में घोषणाओं के लगभग दो महीने बाद, जावासॉफ्ट वेबसाइट पर पहला सार्वजनिक कार्यान्वयन उपलब्ध कराया गया था। यह जावा वेब सर्वर (JWS; तब इसके कोडनेम जीव्स द्वारा जाना जाता था) का पहला अल्फा था<ref>{{cite news |last1=Chang |first1=Phil Inje | date=1997-07-01 |df=mdy |title=Interview: The Java Web Server team gives you the skinny |url=https://www.javaworld.com/article/2076980/interview--the-java-web-server-team-gives-you-the-skinny.html |website=[[JavaWorld]] |access-date=2018-07-25}}</ref> जिसे अंततः 5 जून, 1997 को एक उत्पाद के रूप में भेज दिया जाएगा।<ref>{{cite news |last1=Chang |first1=Phil Inje | date=1997-06-01 |df=mdy |title=Java Web Server ships! |url=https://www.javaworld.com/article/2076965/java-web-server-ships-.html |website=[[JavaWorld]] |access-date=2018-07-25}}</ref>  
Java.net पर अपने ब्लॉग में सन वेटरन और [[कांच की मछली]] के प्रमुख जिम ड्रिस्कॉल ने सर्वलेट तकनीक के इतिहास का विवरण दिया है।<ref>{{cite web|url=https://community.oracle.com/blogs/driscoll/2005/12/10/servlet-history|title=Servlet History &#124; community.oracle.com|date=2005-12-10|publisher=Weblogs.java.net|access-date=2013-06-14}}</ref> [[जेम्स गोस्लिंग]] ने पहली बार जावा (प्रोग्रामिंग लैंग्वेज) के शुरुआती दिनों में सर्वलेट्स के बारे में सोचा था, लेकिन यह अवधारणा दिसंबर 1996 तक एक उत्पाद नहीं बन पाई जब सन ने JWS को भेज दिया।<ref name="Hunter200003">{{cite conference |last1=Hunter |first1=Jason |date=March 2000 |chapter=Servlet Timeline |title=Beyond Java Servlet Programming |conference=O'Reilly Conference on Java |chapter-url=ftp://ftp.ora.com/pub/conference/java/Hunter_J/orabeyond.ppt |publisher=[[O'Reilly Media]]}}</ref><ref>{{cite web |title=Java Web Server |url=http://jserv.javasoft.com:80/products/java-server/webserver/index.html |archive-url=https://web.archive.org/web/19980111053338/http://jserv.javasoft.com/products/java-server/webserver/index.html |archive-date=1998-01-11 |website=Javasoft |publisher=[[Sun Microsystems]] |access-date=2020-02-01 |url-status=live }}</ref><ref>{{cite web |title=Java Web Server(tm) |url=http://sun.com:80/software/jwebserver/index.html |archive-url=https://web.archive.org/web/20020206000714/http://sun.com/software/jwebserver/index.html |archive-date=2002-02-06 |publisher=[[Sun Microsystems]] |access-date=2020-02-01 |url-status=live }}</ref> यह पहले था जो अब जकार्ता ईई को एक विनिर्देश में बनाया गया था।
 
Java.net पर अपने ब्लॉग में सन दिग्गज और ग्लासफिश के प्रमुख जिम ड्रिस्कॉल ने सर्वलेट प्रौद्योगिकी के इतिहास का विवरण दिया है।<ref>{{cite web|url=https://community.oracle.com/blogs/driscoll/2005/12/10/servlet-history|title=Servlet History &#124; community.oracle.com|date=2005-12-10|publisher=Weblogs.java.net|access-date=2013-06-14}}</ref> [[जेम्स गोस्लिंग]] ने पहली बार जावा के शुरुआती दिनों में सर्वलेट्स के बारे में सोचा था, लेकिन यह अवधारणा दिसंबर 1996 तक एक उत्पाद नहीं बन पाई जब सन ने जेडब्ल्यूएस को भेज दिया। <ref name="Hunter200003">{{cite conference |last1=Hunter |first1=Jason |date=March 2000 |chapter=Servlet Timeline |title=Beyond Java Servlet Programming |conference=O'Reilly Conference on Java |chapter-url=ftp://ftp.ora.com/pub/conference/java/Hunter_J/orabeyond.ppt |publisher=[[O'Reilly Media]]}}</ref><ref>{{cite web |title=Java Web Server |url=http://jserv.javasoft.com:80/products/java-server/webserver/index.html |archive-url=https://web.archive.org/web/19980111053338/http://jserv.javasoft.com/products/java-server/webserver/index.html |archive-date=1998-01-11 |website=Javasoft |publisher=[[Sun Microsystems]] |access-date=2020-02-01 |url-status=live }}</ref><ref>{{cite web |title=Java Web Server(tm) |url=http://sun.com:80/software/jwebserver/index.html |archive-url=https://web.archive.org/web/20020206000714/http://sun.com/software/jwebserver/index.html |archive-date=2002-02-06 |publisher=[[Sun Microsystems]] |access-date=2020-02-01 |url-status=live }}</ref> यह पहले था जो अब जकार्ता ईई को एक विनिर्देश में बनाया गया था।


सर्वलेट1 विनिर्देश पावनी दीवानजी द्वारा बनाया गया था<ref>{{cite web|title=Pavni Diwanji|url=https://www.fosi.org/people/pavni-diwanji/|website=Family Online Safety Institute|access-date=12 November 2016}}</ref><ref>{{cite patent |country=US |number=5928323 |status=patent |title=Apparatus and method for dynamically generating information with server-side software objects |pubdate=1999-07-27 |gdate=1999-07-27 |fdate=1997-03-28 |pridate=1996-05-30 |inventor1-last=Gosling |inventor1-first=James A. |inventorlink1=James Gosling |inventor2-last=Diwanji |inventor2-first=Pavni |inventorlink2= |inventor3-last=Connelly |inventor3-first=David W. |inventorlink3= |assign1=[[Sun Microsystems]] |class= |url=}}</ref> जब उसने [[सन माइक्रोसिस्टम्स]] में काम किया, जून 1997 में संस्करण 1.0 को अंतिम रूप दिया गया। संस्करण 2.2 के साथ शुरू करते हुए, विनिर्देश [[जावा सामुदायिक प्रक्रिया]] के तहत विकसित किया गया था।
सर्वलेट1 विनिर्देश पावनी दीवानजी द्वारा बनाया गया था<ref>{{cite web|title=Pavni Diwanji|url=https://www.fosi.org/people/pavni-diwanji/|website=Family Online Safety Institute|access-date=12 November 2016}}</ref><ref>{{cite patent |country=US |number=5928323 |status=patent |title=Apparatus and method for dynamically generating information with server-side software objects |pubdate=1999-07-27 |gdate=1999-07-27 |fdate=1997-03-28 |pridate=1996-05-30 |inventor1-last=Gosling |inventor1-first=James A. |inventorlink1=James Gosling |inventor2-last=Diwanji |inventor2-first=Pavni |inventorlink2= |inventor3-last=Connelly |inventor3-first=David W. |inventorlink3= |assign1=[[Sun Microsystems]] |class= |url=}}</ref> जब उसने [[सन माइक्रोसिस्टम्स]] में काम किया, जून 1997 में संस्करण 1.0 को अंतिम रूप दिया गया। संस्करण 2.2 के साथ शुरू करते हुए, विनिर्देश [[जावा सामुदायिक प्रक्रिया]] के तहत विकसित किया गया था।


सर्वलेट एपीआई इतिहास
{| class="wikitable"
{| class="wikitable"
|+ Servlet API history
!सर्वलेट एपीआई संस्करण
! Servlet API version !! Released !! Specification !! Platform !! Important Changes
!मुक्त
!विनिर्देश
!प्लैटफ़ॉर्म
!महत्वपूर्ण परिवर्तन
|-
|-
| Jakarta Servlet 6.0 || May 31, 2022 || [https://jakarta.ee/specifications/servlet/6.0/ 6.0] || Jakarta EE 10 || remove deprecated features and implement requested enhancements
|जकार्ता सर्वलेट 6.0
|मई 31, 2022
|6.0
|जकार्ता ईई 10
|बहिष्कृत सुविधाओं को हटाएं और अनुरोधित संवर्द्धन लागू करें
|-
|-
| Jakarta Servlet 5.0 || Oct 9, 2020 || [https://jakarta.ee/specifications/servlet/5.0/ 5.0] || Jakarta EE 9 || API moved from package {{code|javax.servlet}} to {{code|jakarta.servlet}}
|जकार्ता सर्वलेट 5.0
|9 अक्टूबर, 2020
|5.0
|जकार्ता ईई 9
|एपीआई पैकेज से स्थानांतरित हो <code>javax.servlet</code>गया<code>jakarta.servlet</code>
|-
|-
| Jakarta Servlet 4.0.3 || Sep 10, 2019 || [https://jakarta.ee/specifications/servlet/4.0/ 4.0] || Jakarta EE 8 || Renamed from "Java" trademark
|जकार्ता सर्वलेट 4.0.3
|सितम्बर 10, 2019
|4.0
|जकार्ता ईई 8
|"जावा" ट्रेडमार्क से नाम बदला गया
|-
|-
| Java Servlet 4.0 || Sep 2017 || [https://jcp.org/en/jsr/detail?id=369 JSR 369] || Java EE 8 || [[HTTP/2]]
|जावा सर्वलेट 4.0
|सितंबर 2017
|जेएसआर 369
|जावा ईई 8
|एचटीटीपी/2
|-
|-
| Java Servlet 3.1 || May 2013 || [https://jcp.org/en/jsr/detail?id=340 JSR 340] || Java EE 7 || Non-blocking I/O, HTTP protocol upgrade mechanism ([[WebSocket]])<ref>{{cite web|url=https://blogs.oracle.com/arungupta/entry/what_s_new_in_servlet|title=What's new in Servlet 3.1 ? - Java EE 7 moving forward (Arun Gupta, Miles to go ...)|work=oracle.com|access-date=22 November 2016}}</ref>
|जावा सर्वलेट 3.1
|मई 2013
|जेएसआर 340
|जावा ईई 7
|नॉन-ब्लॉकिंग I/O, HTTP प्रोटोकॉल अपग्रेड मैकेनिज्म ( वेबसॉकेट )<ref>{{cite web|url=https://blogs.oracle.com/arungupta/entry/what_s_new_in_servlet|title=What's new in Servlet 3.1 ? - Java EE 7 moving forward (Arun Gupta, Miles to go ...)|work=oracle.com|access-date=22 November 2016}}</ref>
|-
|-
| Java Servlet 3.0 || [https://www.infoworld.com/article/2077995/java-concurrency-asynchronous-processing-support-in-servlet-3-0.html December 2009] || [https://jcp.org/en/jsr/detail?id=315 JSR 315] || Java EE 6, Java SE 6 || Pluggability, Ease of development, Async Servlet, Security, File Uploading
|जावा सर्वलेट 3.0
|दिसंबर 2009
|जेएसआर 315
|जावा ईई 6, जावा एसई 6
|प्लग करने की क्षमता, विकास में आसानी, Async सर्वलेट, सुरक्षा, फ़ाइल अपलोडिंग
|-
|-
| Java Servlet 2.5 || [https://www.infoworld.com/article/2071393/new-features-added-to-servlet-2-5.html September 2005] || JSR 154 || Java EE 5, Java SE 5 || Requires Java SE 5, supports annotation
|जावा सर्वलेट 2.5
|सितंबर 2005
|जेएसआर 154
|जावा ईई 5, जावा एसई 5
|जावा एसई 5 की आवश्यकता है, एनोटेशन का समर्थन करता है
|-
|-
| Java Servlet 2.4 || [https://www.infoworld.com/article/2073323/servlet-2-4--what-s-in-store.html November 2003] || [https://jcp.org/en/jsr/detail?id=154 JSR 154] || J2EE 1.4, J2SE 1.3 || web.xml uses XML Schema
|जावा सर्वलेट 2.4
|नवंबर 2003
|जेएसआर 154
|जे2ईई 1.4, जे2एसई 1.3
|web.xml XML स्कीमा का उपयोग करता है
|-
|-
| Java Servlet 2.3 || [https://www.infoworld.com/article/2074918/servlet-2-3--new-features-exposed.html August 2001]|| [https://jcp.org/en/jsr/detail?id=53 JSR 53] || J2EE 1.3, J2SE 1.2 || Addition of <code>Filter</code>
|जावा सर्वलेट 2.3
|अगस्त 2001
|जेएसआर 53
|जे2ईई 1.3, जे2एसई 1.2
|इसका जोड़<code>Filter</code>
|-
|-
| Java Servlet 2.2 || [https://www.infoworld.com/article/2076518/what-s-new-in-java-servlet-api-2-2-.html August 1999]|| [https://jcp.org/en/jsr/detail?id=902 JSR 902], [https://jcp.org/en/jsr/detail?id=903 JSR 903] || J2EE 1.2, J2SE 1.2 || Becomes part of J2EE, introduced independent web applications in .war files
|जावा सर्वलेट 2.2
|अगस्त 1999
|जेएसआर 902 , जेएसआर 903
|जे2ईई 1.2, जे2एसई 1.2
|J2EE का हिस्सा बना, .war फ़ाइलों में स्वतंत्र वेब एप्लिकेशन पेश किए
|-
|-
| Java Servlet 2.1 || [https://www.infoworld.com/article/2076838/introducing-the-new-servlet-api-2-1.html November 1998] || [https://web.archive.org/web/20090611171402/http://java.sun.com/products/servlet/2.1/servlet-2.1.pdf 2.1a] || Unspecified || First official specification, added <code>RequestDispatcher</code>, <code>ServletContext</code>
|जावा सर्वलेट 2.1
|नवंबर 1998
|2.1a
|अनिर्दिष्ट
|पहला आधिकारिक विनिर्देश, जोड़ा गया <code>RequestDispatcher</code>,<code>ServletContext</code>
|-
|-
| Java Servlet 2.0 || December 1997 || {{n/a}} || JDK 1.1 || Part of April 1998 Java Servlet Development Kit 2.0<ref>{{cite book |last1=Crawford |first1=William |last2=Hunter |first2=Jason |date=November 1998 |chapter=Preface |title=Java Servlet Programming |edition=1st |publisher=[[O'Reilly Media]] |page=ix–x |isbn=978-1-56592-391-1 |quote=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. |url-access=registration |url=https://archive.org/details/javaservletprogr00hunt }}</ref>
|जावा सर्वलेट 2.0
|दिसंबर 1997
|
|जेडीके 1.1
|अप्रैल 1998 का हिस्सा जावा सर्वलेट डेवलपमेंट किट 2.0<ref>{{cite book |last1=Crawford |first1=William |last2=Hunter |first2=Jason |date=November 1998 |chapter=Preface |title=Java Servlet Programming |edition=1st |publisher=[[O'Reilly Media]] |page=ix–x |isbn=978-1-56592-391-1 |quote=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. |url-access=registration |url=https://archive.org/details/javaservletprogr00hunt }}</ref>
|-
|-
| Java Servlet 1.0 || December 1996|| {{n/a}} || || Part of June 1997 Java Servlet Development Kit (JSDK) 1.0<ref name="Hunter200003"/>
|जावा सर्वलेट 1.0
|दिसंबर 1996
|
|
|जून 1997 जावा सर्वलेट डेवलपमेंट किट (जेएसडीके) 1.0 <ref name="Hunter200003" />
|}
|}


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


* सर्वलेट ऑब्जेक्ट जीवनकाल के प्रारंभिक चरण के दौरान, वेब कंटेनर [http://docs.oracle.com/javaee/7/api/javax/servlet/Servlet.html#init पर कॉल करके सर्वलेट उदाहरण को प्रारंभ करता है। <code>init()</code>] विधि, [http://docs.oracle.com/javaee/7/api/javax/servlet/ServletConfig.html को लागू करने वाली वस्तु को पारित करना <code>javax.servlet.ServletConfig</code>] इंटरफेस। यह कॉन्फ़िगरेशन ऑब्जेक्ट सर्वलेट को वेब एप्लिकेशन से विशेषता-मूल्य जोड़ी | नाम-मूल्य आरंभीकरण मापदंडों तक पहुंचने की अनुमति देता है।
* सर्वलेट जीवन चक्र के प्रारंभिक चरण के दौरान, वेब कंटेनर init() विधि को कॉल करके सर्वलेट उदाहरण को प्रारंभ करता है, javax.servlet.ServletConfig इंटरफ़ेस को लागू करने वाली वस्तु को पारित करता है। यह कॉन्फ़िगरेशन ऑब्जेक्ट सर्वलेट को वेब एप्लिकेशन से नाम-मूल्य आरंभीकरण मापदंडों तक पहुंचने की अनुमति देता है।
* आरंभीकरण के बाद, सर्वलेट उदाहरण क्लाइंट अनुरोधों को पूरा कर सकता है। प्रत्येक HTTP अनुरोध # अनुरोध संदेश को अपने अलग थ्रेड में सेवित किया जाता है। वेब कंटेनर कॉल करता है <code>service()</code> प्रत्येक अनुरोध के लिए सर्वलेट की विधि। <code>service()</code> ई> विधि अनुरोध के प्रकार को निर्धारित करती है और अनुरोध को संभालने के लिए उपयुक्त विधि को भेजती है। सर्वलेट के विकासकर्ता को इन विधियों के लिए कार्यान्वयन प्रदान करना चाहिए। यदि किसी ऐसी विधि के लिए अनुरोध किया जाता है जो सर्वलेट द्वारा लागू नहीं की जाती है, तो मूल वर्ग की विधि को कहा जाता है, जिसके परिणामस्वरूप आमतौर पर अनुरोधकर्ता को त्रुटि वापस आ जाती है।
*आरंभीकरण के बाद, सर्वलेट उदाहरण क्लाइंट अनुरोधों को पूरा कर सकता है। प्रत्येक एचटीटीपी अनुरोध संदेश को अपने अलग थ्रेड में सेवित किया जाता है। वेब कंटेनर कॉल करता है <code>service()</code> प्रत्येक अनुरोध के लिए सर्वलेट की विधि। <code>service()</code> विधि अनुरोध के प्रकार को निर्धारित करती है और अनुरोध को संभालने के लिए उपयुक्त विधि को भेजती है। सर्वलेट के विकासकर्ता को इन विधियों के लिए कार्यान्वयन प्रदान करना चाहिए। यदि किसी ऐसी विधि के लिए अनुरोध किया जाता है जो सर्वलेट द्वारा लागू नहीं की जाती है, तो मूल वर्ग की विधि को कहा जाता है, जिसके परिणामस्वरूप सामान्यतः अनुरोधकर्ता को त्रुटि वापस आ जाती है।
* अंत में, वेब कंटेनर कॉल करता है <code>destroy()</code> विधि जो सर्वलेट को सेवा से बाहर ले जाती है। <code>destroy()</code> ई> विधि, जैसे <code>init()</code>सर्वलेट के जीवन चक्र में केवल एक बार कॉल किया जाता है।
* अंत में, वेब कंटेनर कॉल करता है <code>destroy()</code> विधि जो सर्वलेट को सेवा से बाहर ले जाती है। <code>destroy()</code>विधि, जैसे <code>init()</code>सर्वलेट के जीवन चक्र में केवल एक बार कॉल किया जाता है।


निम्नलिखित इन विधियों का एक विशिष्ट उपयोगकर्ता परिदृश्य है।
निम्नलिखित इन विधियों का एक विशिष्ट उपयोगकर्ता परिदृश्य है।
# मान लें कि एक उपयोगकर्ता एक समान संसाधन लोकेटर पर जाने का अनुरोध करता है।
# मान लें कि एक उपयोगकर्ता एक समान संसाधन लोकेटर पर जाने का अनुरोध करता है।
#* ब्राउज़र तब इस URL के लिए एक HTTP अनुरोध उत्पन्न करता है।
#* ब्राउज़र तब इस यूआरएल के लिए एक एचटीटीपी अनुरोध उत्पन्न करता है।
#* यह अनुरोध तब उपयुक्त सर्वर को भेजा जाता है।
#* यह अनुरोध तब उपयुक्त सर्वर को भेजा जाता है।
# HTTP अनुरोध वेब सर्वर द्वारा प्राप्त किया जाता है और सर्वलेट कंटेनर को अग्रेषित किया जाता है।
# एचटीटीपी अनुरोध वेब सर्वर द्वारा प्राप्त किया जाता है और सर्वलेट कंटेनर को अग्रेषित किया जाता है।
#* कंटेनर इस अनुरोध को एक विशेष सर्वलेट में मैप करता है।
#* कंटेनर इस अनुरोध को एक विशेष सर्वलेट में मैप करता है।
#* सर्वलेट को गतिशील रूप से पुनर्प्राप्त किया जाता है और कंटेनर के पता स्थान में लोड किया जाता है।
#* सर्वलेट को गतिशील रूप से पुनर्प्राप्त किया जाता है और कंटेनर के पता स्थान में लोड किया जाता है।
Line 96: Line 151:
#* सर्वलेट को इनिशियलाइज़ेशन पैरामीटर पास करना संभव है ताकि वह खुद को कॉन्फ़िगर कर सके।
#* सर्वलेट को इनिशियलाइज़ेशन पैरामीटर पास करना संभव है ताकि वह खुद को कॉन्फ़िगर कर सके।
# कंटेनर आह्वान करता है <code>service()</code> सर्वलेट की विधि।
# कंटेनर आह्वान करता है <code>service()</code> सर्वलेट की विधि।
#* HTTP अनुरोध को संसाधित करने के लिए इस विधि को कहा जाता है।
#* एचटीटीपी अनुरोध को संसाधित करने के लिए इस विधि को कहा जाता है।
#* सर्वलेट HTTP अनुरोध में प्रदान किए गए डेटा को पढ़ सकता है।
#* सर्वलेट एचटीटीपी अनुरोध में प्रदान किए गए डेटा को पढ़ सकता है।
#* सर्वलेट क्लाइंट के लिए HTTP प्रतिक्रिया भी तैयार कर सकता है।
#* सर्वलेट क्लाइंट के लिए एचटीटीपी प्रतिक्रिया भी तैयार कर सकता है।
# सर्वलेट कंटेनर के एड्रेस स्पेस में रहता है और क्लाइंट से प्राप्त किसी अन्य HTTP अनुरोध को संसाधित करने के लिए उपलब्ध होता है।
# सर्वलेट कंटेनर के एड्रेस स्पेस में रहता है और क्लाइंट से प्राप्त किसी अन्य एचटीटीपी अनुरोध को संसाधित करने के लिए उपलब्ध होता है।
#* <code>service()</code> ई> विधि प्रत्येक HTTP अनुरोध के लिए कहा जाता है।
#* <code>service()</code> विधि प्रत्येक एचटीटीपी अनुरोध के लिए कहा जाता है।
# कंटेनर, किसी बिंदु पर, सर्वलेट को उसकी मेमोरी से अनलोड करने का निर्णय ले सकता है।
# कंटेनर, किसी बिंदु पर, सर्वलेट को उसकी मेमोरी से अनलोड करने का निर्णय ले सकता है।
#* एल्गोरिदम जिसके द्वारा यह निर्णय लिया जाता है, प्रत्येक कंटेनर के लिए विशिष्ट होता है।
#* एल्गोरिदम जिसके द्वारा यह निर्णय लिया जाता है, प्रत्येक कंटेनर के लिए विशिष्ट होता है।
Line 109: Line 164:
निम्न उदाहरण सर्वलेट कितनी बार प्रिंट करता है <code>service()</code> विधि कहा जाता था।
निम्न उदाहरण सर्वलेट कितनी बार प्रिंट करता है <code>service()</code> विधि कहा जाता था।


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


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


सार्वजनिक वर्ग ServletLifeCycleExample HttpServlet { का विस्तार करता है
public class ServletLifeCycleExample extends HttpServlet {
     निजी पूर्णांक साझा काउंटर;
     private Integer sharedCounter;


     @Override
     @Override
     सार्वजनिक शून्य init (अंतिम ServletConfig कॉन्फ़िगरेशन) ServletException फेंकता है {
     public void init(final ServletConfig config) throws ServletException {
         सुपर.इनिट (विन्यास);
         super.init(config);
         getServletContext ()। लॉग (init () कहा जाता है);
         getServletContext().log("init() called");
         साझा काउंटर = 0;
         sharedCounter = 0;
     }
     }


     @Override
     @Override
     संरक्षित शून्य सेवा (अंतिम HttpServletRequest अनुरोध, अंतिम HttpServletResponse प्रतिक्रिया) ServletException फेंकता है, IOException {
     protected void service(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {
         getServletContext ()। लॉग (सेवा () कहा जाता है);
         getServletContext().log("service() called");
         इंट लोकल काउंटर;
         int localCounter;
         सिंक्रनाइज़ (साझा काउंटर) {
         synchronized (sharedCounter) {
             साझा काउंटर ++;
             sharedCounter++;
             स्थानीय काउंटर = साझा काउंटर;
             localCounter = sharedCounter;
         }
         }
         प्रतिक्रिया.getWriter().लिखना (गिनती को + स्थानीय काउंटर तक बढ़ाना); // एक स्थानीय चर का उपयोग
         response.getWriter().write("Incrementing the count to " + localCounter); // accessing a local variable
     }
     }


     @Override
     @Override
     सार्वजनिक शून्य नष्ट () {
     public void destroy() {
         getServletContext ()। लॉग (नष्ट () कहा जाता है);
         getServletContext().log("destroy() called");
     }
     }
}
}
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>


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


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


== संदर्भ ==
== संदर्भ ==
{{Reflist}}
{{Reflist}}
== बाहरी संबंध ==
== बाहरी संबंध ==
* {{Official website}}
* [http://www.servlets.com/ Servlets.com]
* [http://www.servlets.com/ Servlets.com]
{{Jakarta EE}}
{{Web interfaces}}
{{Authority control}}
{{Authority control}}
[[Category: जावा कोड उदाहरण के साथ लेख]] [[Category: जावा एंटरप्राइज़ प्लेटफ़ॉर्म | सर्वलेट]] [[Category: जावा विनिर्देश अनुरोध | सर्वलेट]]


[[Category: Machine Translated Page]]
[[Category:Created On 19/02/2023]]
[[Category:Created On 19/02/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Short description with empty Wikidata description]]
[[Category:Template documentation pages|Short description/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:जावा एंटरप्राइज़ प्लेटफ़ॉर्म| सर्वलेट]]

Latest revision as of 17:14, 4 September 2023

Original author(s)पावनी दीवान जी
Developer(s)एक्लिप्स फाउंडेशन
Initial releaseDecember 1996; 27 years ago (1996-12)
Stable release
6.0 / May 31, 2022; 2 years ago (2022-05-31)
Written inजावा
PlatformJakarta EE
Size2.56 MB
Typeसॉफ्टवेयर घटक वेब एपीआई के लिए
Licenseएक्लिप्स पब्लिक लाइसेंस
Websitejakarta.ee/specifications/servlet/
जावा सर्वर पेज फ़ाइल का जीवन

जकार्ता सर्वलेट (पूर्व में जावा सर्वलेट) एक जावा सॉफ्टवेयर घटक है जो सर्वर की क्षमताओं का विस्तार करता है। हालांकि सर्वलेट्स कई प्रकार के अनुरोधों का जवाब दे सकते हैं, वे वेब सर्वर पर वेब अनुप्रयोगों को होस्ट करने के लिए सामान्यतः वेब कंटेनरों को लागू करते हैं और इस प्रकार सर्वर-साइड सर्वलेट वेब एपीआई के रूप में अर्हता प्राप्त करते हैं। ऐसे वेब सर्वलेट 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 के साथ शुरू करते हुए, विनिर्देश जावा सामुदायिक प्रक्रिया के तहत विकसित किया गया था।

सर्वलेट एपीआई इतिहास

सर्वलेट एपीआई संस्करण मुक्त विनिर्देश प्लैटफ़ॉर्म महत्वपूर्ण परिवर्तन
जकार्ता सर्वलेट 6.0 मई 31, 2022 6.0 जकार्ता ईई 10 बहिष्कृत सुविधाओं को हटाएं और अनुरोधित संवर्द्धन लागू करें
जकार्ता सर्वलेट 5.0 9 अक्टूबर, 2020 5.0 जकार्ता ईई 9 एपीआई पैकेज से स्थानांतरित हो javax.servletगयाjakarta.servlet
जकार्ता सर्वलेट 4.0.3 सितम्बर 10, 2019 4.0 जकार्ता ईई 8 "जावा" ट्रेडमार्क से नाम बदला गया
जावा सर्वलेट 4.0 सितंबर 2017 जेएसआर 369 जावा ईई 8 एचटीटीपी/2
जावा सर्वलेट 3.1 मई 2013 जेएसआर 340 जावा ईई 7 नॉन-ब्लॉकिंग I/O, HTTP प्रोटोकॉल अपग्रेड मैकेनिज्म ( वेबसॉकेट )[13]
जावा सर्वलेट 3.0 दिसंबर 2009 जेएसआर 315 जावा ईई 6, जावा एसई 6 प्लग करने की क्षमता, विकास में आसानी, Async सर्वलेट, सुरक्षा, फ़ाइल अपलोडिंग
जावा सर्वलेट 2.5 सितंबर 2005 जेएसआर 154 जावा ईई 5, जावा एसई 5 जावा एसई 5 की आवश्यकता है, एनोटेशन का समर्थन करता है
जावा सर्वलेट 2.4 नवंबर 2003 जेएसआर 154 जे2ईई 1.4, जे2एसई 1.3 web.xml XML स्कीमा का उपयोग करता है
जावा सर्वलेट 2.3 अगस्त 2001 जेएसआर 53 जे2ईई 1.3, जे2एसई 1.2 इसका जोड़Filter
जावा सर्वलेट 2.2 अगस्त 1999 जेएसआर 902 , जेएसआर 903 जे2ईई 1.2, जे2एसई 1.2 J2EE का हिस्सा बना, .war फ़ाइलों में स्वतंत्र वेब एप्लिकेशन पेश किए
जावा सर्वलेट 2.1 नवंबर 1998 2.1a अनिर्दिष्ट पहला आधिकारिक विनिर्देश, जोड़ा गया RequestDispatcher,ServletContext
जावा सर्वलेट 2.0 दिसंबर 1997 जेडीके 1.1 अप्रैल 1998 का हिस्सा जावा सर्वलेट डेवलपमेंट किट 2.0[14]
जावा सर्वलेट 1.0 दिसंबर 1996 जून 1997 जावा सर्वलेट डेवलपमेंट किट (जेएसडीके) 1.0 [8]

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

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

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

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

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

उदाहरण

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

ध्यान दें कि HttpServlet, GenericServlet का एक उपवर्ग है, जो सर्वलेट इंटरफ़ेस का कार्यान्वयन है।

service() की विधि HttpServlet वर्ग तरीकों के लिए अनुरोध भेजता है doGet(), doPost(), doPut(), doDelete(), और इसी तरह; एचटीटीपी अनुरोध के अनुसार। नीचे दिए गए उदाहरण में service() अधिलेखित है और यह भेद नहीं करता है कि यह कौन सी एचटीटीपी अनुरोध विधि प्रदान करता है।

import java.io.IOException;

import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

public class ServletLifeCycleExample extends HttpServlet {
    private Integer sharedCounter;

    @Override
    public void init(final ServletConfig config) throws ServletException {
        super.init(config);
        getServletContext().log("init() called");
        sharedCounter = 0;
    }

    @Override
    protected void service(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {
        getServletContext().log("service() called");
        int localCounter;
        synchronized (sharedCounter) {
            sharedCounter++;
            localCounter = sharedCounter;
        }
        response.getWriter().write("Incrementing the count to " + localCounter);  // accessing a local variable
    }

    @Override
    public void destroy() {
        getServletContext().log("destroy() called");
    }
}

कंटेनर सर्वर

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

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

संदर्भ

  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.

बाहरी संबंध