1.1 इंटरफेस सर्व्हलेट
आज आपण एक नवीन आणि मनोरंजक विषय सुरू करत आहोत - servlets . जावामध्ये सर्व्हलेट्सची भर घातली गेली ज्यामुळे जावा मोठ्या सर्व्हर ऍप्लिकेशन्ससाठी वास्तविक मानक बनले. जगातील सर्व एंटरप्राइझ सॉफ्टवेअरपैकी 80% Java मध्ये लिहिलेले आहे. आणि चीनमध्ये, सर्वकाही 100% आहे. तर सर्व्हलेट्स म्हणजे काय?
सर्व्हलेट म्हणजे जावा प्रोग्रामला वेब सेवेत रूपांतरित करते आणि क्लायंटच्या विनंतीवर प्रक्रिया करण्याची परवानगी देते. आणि हे असे होते ...
90 च्या दशकात, वर्ल्ड वाइड वेबच्या आगमनानंतर, वेब क्लायंट (ब्राउझर) आणि वेब सर्व्हर दिसू लागले. वेब सर्व्हर सहसा इंटरनेटवर संग्रहित केलेली फाईल वितरीत करतात: html पृष्ठे, स्क्रिप्ट्स, चित्रे इ.
कधीतरी, प्रत्येकजण निष्कर्षापर्यंत पोहोचला की दोन्ही बाजू अधिक स्मार्ट करणे आवश्यक आहे. HTML पृष्ठांवर JavaScript जोडले गेले आणि सर्व्हरवर प्लगइन जोडले गेले - विशेष स्क्रिप्ट ज्या विशिष्ट विनंत्यांना प्रतिसाद म्हणून कॉल केल्या गेल्या आणि सर्व्हरचे वर्तन अधिक लवचिक आणि स्मार्ट बनवले.
म्हणून सर्व्हलेट हे असे जावा प्लगइन आहे ज्यामध्ये तयार केले गेले होते Java web-server
आणि विशिष्ट पृष्ठांसाठी विनंती केल्यावर जावा कोड कार्यान्वित करण्याची परवानगी दिली होती. आणि आधीपासून हा Java कोड, सर्व्हलेट क्लासकडून वारशाने मिळालेल्या वर्गाद्वारे दर्शविला गेला, त्याच्या विकासकांच्या इच्छेनुसार केले.
आणि तुम्हाला आधीच माहित आहे की, सर्वात लोकप्रिय जावा वेब सर्व्हर टॉमकॅट आहे . तसे, कार्टून "टॉम अँड जेरी" मधील टॉम मांजरीच्या सन्मानार्थ नाव दिले गेले.
टॉमकॅट सर्वलेटशी कसा संवाद साधतो? खरं तर, ही प्रक्रिया प्रमाणित आहे आणि तिला सर्व्हलेट जीवन चक्र म्हणतात . त्यामध्ये, सर्व्हलेट एक लोड करण्यायोग्य ऑब्जेक्ट आहे आणि वेब सर्व्हर एक सर्व्हलेट कंटेनर आहे .
सर्व्हलेट अद्याप लोड केले नसल्यास , नंतर:
- सर्व्हलेट क्लास कंटेनरद्वारे लोड केला जातो.
- कंटेनर सर्व्हलेटच्या वर्गाचे (ऑब्जेक्ट) उदाहरण तयार करतो.
- कंटेनर
init()
सर्व्हलेट ऑब्जेक्टवर एक पद्धत कॉल करतो. पद्धत फक्त एकदाच म्हटले जाते.
मानक कार्य चक्र - क्लायंटची विनंती पूर्ण करणे :
- प्रत्येक विनंतीवर वेगळ्या धाग्यावर प्रक्रिया केली जाते.
- कंटेनर
service()
सर्व्हलेटवर एक पद्धत कॉल करतो आणि तेथे सर्व्हलेट रिक्वेस्ट आणि सर्व्हलेट रिस्पॉन्स ऑब्जेक्ट्स पास करतो. - सर्व्हलेट समाप्त करण्यासाठी,
destroy()
सर्व्हलेट ऑब्जेक्टवर एक पद्धत कॉल केली जाते. फक्त एकदाच बोलावले जाते.
सर्व्हलेट संपुष्टात येण्याची अनेक कारणे असू शकतात:
- प्रोग्रामर वेब सर्व्हर रीस्टार्ट करतो, सर्व सर्व्हलेट्स कृपापूर्वक बंद करणे आवश्यक आहे.
- प्रोग्रामर सर्व्हलेटची नवीन आवृत्ती लोड करतो, जुनी योग्यरित्या अनलोड करणे आवश्यक आहे.
- वगैरे.
मुख्य गोष्ट लक्षात ठेवा: वेब सर्व्हर आणि त्याच्या सर्व्हलेट्सने अपयशाशिवाय कार्य केले पाहिजे आणि महिन्यासाठी रीस्टार्ट केले पाहिजे, प्रति मिनिट हजारो विनंत्या सर्व्ह करा. म्हणून, सर्वलेट लोड करणे, कार्य करणे आणि अनलोड करणे या दोन्हीसाठीचा कोड नेहमीच उच्च दर्जाचा असावा.
1.2 HttpServlet वर्ग
सर्व्हलेट आणि कंटेनर कसे कार्य करतात हे प्रमाणित करण्यासाठी सर्व्हलेट वर्ग अस्तित्वात आहे. प्रोग्रामर या वर्गासह थेट कार्य करत नाहीत. बरं, ते क्वचितच काम करतात. सर्वात सामान्यपणे वापरला जाणारा वर्ग HttpServlet
Servlet कडून वारसा मिळाला आहे.
या वर्गात अनेक पद्धती आहेत ज्या आम्हाला उपयोगी पडतील. आपण ते सहसा वापरता:
पद्धत | वर्णन | |
---|---|---|
१ | init() |
सर्व्हलेट लोड झाल्यावर एकदा कॉल केला जातो |
2 | destroy() |
सर्व्हलेट अनलोड झाल्यावर एकदा कॉल केला |
3 | service(HttpRequest, HttpResponse) |
सर्व्हलेटला प्रत्येक नवीन विनंतीसाठी कॉल केला जातो |
4 | doGet(HttpRequest, HttpResponse) |
सर्व्हलेटला प्रत्येक नवीन GET विनंतीसाठी कॉल केले जाते |
५ | doPost(HttpRequest, HttpResponse) |
सर्व्हलेटला प्रत्येक नवीन POST विनंतीसाठी कॉल केला जातो |
6 | doHead(HttpRequest, HttpResponse) |
सर्व्हलेटला प्रत्येक नवीन HEAD विनंतीसाठी कॉल केला जातो |
७ | doDelete(HttpRequest, HttpResponse) |
सर्व्हलेटला प्रत्येक नवीन DELETE विनंतीसाठी कॉल केला जातो |
8 | doPut(HttpRequest, HttpResponse) |
सर्व्हलेटला प्रत्येक नवीन PUT विनंतीसाठी कॉल केले जाते |
init()
आणि पद्धती destroy()
सर्व्हलेट वर्गाकडून वारशाने मिळतात. म्हणून, जर तुम्ही त्यांना तुमच्या सर्व्हलेटमध्ये ओव्हरराइड करण्याचा निर्णय घेतला, तर तुम्हाला बेस क्लासमधून त्यांची अंमलबजावणी देखील कॉल करावी लागेल. यासाठी कमांड वापरली जाते super.method name()
.
सर्व्हलेट उदाहरण:
public class FirstHttpServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Getting the parameter “secret” from request
String secret = request.getParameter("secret");
// Put parameter “secret” into Http-session
HttpSession session = request.getSession(true);
session.setAttribute("secret", secret);
// Print HTML as response for browser
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Header</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet example "+ secret +"</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
}
1.3 सेवा(HttpServletRequest, HttpServletResponse) पद्धत
जर तुम्ही सर्व्हलेटच्या दृष्टिकोनातून क्लायंटच्या विनंतीची प्रक्रिया पाहिली तर गोष्टी यासारख्या आहेत.
प्रत्येक क्लायंटच्या विनंतीसाठी, कंटेनर (वेब सर्व्हर) तयार करतो HttpServletRequest
आणि ऑब्जेक्ट HttpServletResponse
करतो आणि नंतर service(HttpServletRequest request, HttpServletResponse response)
संबंधित सर्व्हलेटवर एक पद्धत कॉल करतो. हे ऑब्जेक्ट्स त्यावर पास केले जातात जेणेकरून पद्धत आवश्यक डेटा घेऊ शकते request
आणि कामाचा परिणाम मध्ये ठेवू शकते response
.
पद्धतीमध्ये service()
डीफॉल्ट अंमलबजावणी आहे. जर ते पुन्हा परिभाषित केले नाही तर ते कार्यान्वित केले जाईल. तेच तो करतो.
पद्धत service()
विनंतीवरून HTTP पद्धत प्रकार निर्धारित करते (GET, POST, ...) आणि विनंतीशी संबंधित पद्धतीला कॉल करते.
पद्धत | वर्णन | |
---|---|---|
१ | service(HttpRequest, HttpResponse) |
सर्व्हलेटला प्रत्येक नवीन विनंतीसाठी कॉल केला जातो |
2 | doGet(HttpRequest, HttpResponse) |
सर्व्हलेटला प्रत्येक नवीन GET विनंतीसाठी कॉल केले जाते |
3 | doPost(HttpRequest, HttpResponse) |
सर्व्हलेटला प्रत्येक नवीन POST विनंतीसाठी कॉल केला जातो |
4 | doHead(HttpRequest, HttpResponse) |
सर्व्हलेटला प्रत्येक नवीन HEAD विनंतीसाठी कॉल केला जातो |
५ | doDelete(HttpRequest, HttpResponse) |
सर्व्हलेटला प्रत्येक नवीन DELETE विनंतीसाठी कॉल केला जातो |
6 | doPut(HttpRequest, HttpResponse) |
सर्व्हलेटला प्रत्येक नवीन PUT विनंतीसाठी कॉल केले जाते |
तुमच्या वर्गात, तुम्ही एकतर एक पद्धत पुन्हा परिभाषित करू शकता service()
, किंवा ती सोडू शकता, परंतु नंतर पद्धती पुन्हा परिभाषित करू शकता doGet()
, doPost()
, ... आवश्यकतेनुसार.
GO TO FULL VERSION