3.1 एचटीटीपी सर्वलेट रिस्पांस क्लास
आपकी सर्वलेट विधि को कॉल करने के बाद service()
, वेब कंटेनर क्लाइंट के आधार पर प्रतिक्रिया उत्पन्न करेगा HttpServletResponse
। इसलिए यदि आप किसी तरह क्लाइंट की प्रतिक्रिया को प्रभावित करना चाहते हैं, तो आपको इस ऑब्जेक्ट को संशोधित करना चाहिए।
सर्वर प्रतिक्रिया में तीन भाग होते हैं:
- स्थिति रेखा (उदाहरण के लिए: 200 OK)
- हेडर
- प्रतिक्रिया शरीर
और क्लास मेथड्स को HttpServletResponse
भी 3 ग्रुप्स में बांटा गया है? लगभग:
तरीकों | विवरण | |
---|---|---|
1 | void setStatus(int sc) |
प्रतिक्रिया स्थिति कोड सेट करता है। |
2 | void sendError(int sc) |
क्लाइंट को निर्दिष्ट कोड के साथ एक त्रुटि भेजता है। |
3 | void sendError(int sc, String msg) |
निर्दिष्ट कोड और ग्राहक को एक संदेश के साथ एक त्रुटि भेजता है। |
4 | void addHeader(String name, String value) |
प्रतिक्रिया शीर्षलेखों की सूची में शीर्षलेख जोड़ता है। |
5 | void setHeader(String name, String value) |
प्रतिक्रिया शीर्षलेखों की सूची में शीर्षलेख बदलें। |
6 | boolean containsHeader(String name) |
जाँचता है कि हेडर पहले से मौजूद है या नहीं। |
7 | void addCookie(Cookie cookie) |
प्रतिक्रिया में एक कुकी जोड़ता है। |
8 | void sendRedirect(String location) |
क्लाइंट को किसी भिन्न URL पर पुनर्निर्देशित करता है। |
9 | String encodeRedirectURL(String url) |
SendRedirect विधि में उपयोग के लिए निर्दिष्ट URL को एनकोड करता है। |
10 | String encodeURL(String url) |
सत्र आईडी सहित निर्दिष्ट URL को एनकोड करता है। |
ग्यारह | void setContentType(String type) |
परिणाम का माइम प्रकार सेट करता है। |
12 | void setContentLength(int len) |
प्रतिक्रिया निकाय की लंबाई सेट करता है। |
13 | void setCharacterEncoding(String charset) |
प्रतिक्रिया एन्कोडिंग सेट सेट करता है। |
14 | void setBufferSize(int size) |
प्रतिक्रिया निकाय के लिए बफ़र आकार सेट करता है। |
15 | boolean isCommitted() |
जांचता है कि प्रतिक्रिया के लिए बफर पहले ही लिखा जा चुका है या नहीं। |
16 | void flushBuffer() |
प्रतिक्रिया के लिए बफर की सामग्री लिखता है। |
17 | void reset() |
बफ़र, हेडर और प्रतिक्रिया कोड में संग्रहीत सभी डेटा को रीसेट करता है। |
18 | void resetBuffer() |
प्रतिक्रिया बफ़र साफ़ करता है। |
यहां के तरीके काफी मामूली हैं। लेकिन मैं आपको नीचे कुछ हाइलाइट्स दूंगा।
बफर । आपकी सर्वलेट की प्रतिक्रिया बफर को लिखी जाती है, उपयोगकर्ता को तुरंत नहीं भेजी जाती है। इसलिए, किसी स्तर पर (यदि, उदाहरण के लिए, कोई त्रुटि होती है), तो आप बफर को लिखी गई हर चीज को रीसेट (मिटा) सकते हैं। आप रीसेट () विधि को भी कॉल कर सकते हैं और न केवल बफर की सामग्री को मिटा सकते हैं, बल्कि हेडर को प्रतिक्रिया कोड के साथ भी मिटा सकते हैं।
3.2 रीडायरेक्ट ()
दूसरा महत्वपूर्ण बिंदु पुनर्निर्देशन है। यदि आपका सर्वलेट क्लाइंट को किसी अन्य URL पर पुनर्निर्देशित करने का निर्णय लेता है, तो आपको किसी तरह क्लाइंट को यह URL भेजने की आवश्यकता है। इसका उपयोग करके किया जा सकता है sendRedirect
।
लेकिन एक महत्वपूर्ण सूक्ष्मता है। प्रतिक्रिया निकाय में अनुमत वर्णों की तुलना में URI में वर्णों की एक विस्तृत श्रृंखला हो सकती है। इसलिए, विधि को कॉल करने से पहले URL को पहले एक मान्य वर्ण सेट में एन्कोड किया जाना चाहिए sendRedirect()
। इसके लिए एक खास तरीका है encodeRedirectURL(String url)
। इसका इस्तेमाल करें।
रीडायरेक्ट उदाहरण:
public class RedirectServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
String newUrl = "http://google.com?q=Learn to google!";
String redirectUrl = response.encodeRedirectURL(newUrl);
response.sendRedirect(redirectUrl);
}
}
3.3 गेटवाइटर () विधि
और अब हम सीखेंगे कि प्रतिक्रिया निकाय के रूप में अपना पाठ कैसे लिखें। ऐसा करने के लिए, वर्ग के HttpServletResponse
पास एक विशेष विधि है getWriter()
जो एक वस्तु लौटाती है PrintStream
। अगर कोई भूल गया है, तो यह नाम के साथ फ़ील्ड का प्रकार है System.out
।
सर्वलेट प्रतिक्रिया के रूप में कुछ पाठ लिखने के लिए, आपको चाहिए:
- कॉल करके प्रिंटस्ट्रीम ऑब्जेक्ट प्राप्त करें
response.getWriter()
। - प्रिंटस्ट्रीम ऑब्जेक्ट के लिए आपको जो भी आवश्यक लगता है उसे लिखें (सभी डेटा बफर में लिखे जाएंगे)।
close()
PrintStream पर विधि को कॉल करके उपयोगकर्ता को बफ़र भेजें ।
आइए एक सर्वलेट लिखते हैं जो दो नंबर जोड़ता है a
और b
उपयोगकर्ता को परिणाम देता है:
public class CalculatorServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Getting the parameter “a” and “b” from request
String a = request.getParameter("a");
String b = request.getParameter("b");
try {
// Convert strings to numbers and calculate sum
int sum = Integer.parseInt(a) + Integer.parseInt(b);
// Print HTML as a response for browser
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head> <title> CalculatorServlet </title> </head>");
out.println("<body>");
out.println("<h1> Sum == " + sum + "</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
}
GO TO FULL VERSION