CodeGym/Java Course/मॉड्यूल 3/सर्व्हलेट प्रतिसादांना आकार देणे

सर्व्हलेट प्रतिसादांना आकार देणे

उपलब्ध

3.1 HttpServletResponse वर्ग

तुमच्या सर्व्हलेट पद्धतीवर कॉल केल्यानंतर service(), वेब कंटेनर क्लायंटवर आधारित प्रतिसाद तयार करेल HttpServletResponse. म्हणून जर तुम्हाला क्लायंटच्या प्रतिसादावर कसा तरी प्रभाव टाकायचा असेल, तर तुम्ही हा ऑब्जेक्ट सुधारला पाहिजे.

सर्व्हर प्रतिसादात तीन भाग असतात:

  • स्थिती ओळ (उदाहरणार्थ: 200 ओके)
  • शीर्षलेख
  • प्रतिसाद शरीर

आणि वर्ग पद्धती HttpServletResponseदेखील 3 गटांमध्ये विभागल्या जातात? जवळजवळ:

पद्धती वर्णन
void setStatus(int sc) प्रतिसाद स्थिती कोड सेट करते.
2 void sendError(int sc) निर्दिष्ट कोडसह क्लायंटला त्रुटी पाठवते.
3 void sendError(int sc, String msg) निर्दिष्ट कोडसह त्रुटी आणि क्लायंटला संदेश पाठवते.
4 void addHeader(String name, String value) प्रतिसाद शीर्षलेखांच्या सूचीमध्ये शीर्षलेख जोडते.
void setHeader(String name, String value) प्रतिसाद शीर्षलेखांच्या सूचीमधील शीर्षलेख बदलते.
6 boolean containsHeader(String name) हेडर आधीपासून अस्तित्वात आहे का ते तपासते.
void addCookie(Cookie cookie) प्रतिसादात एक कुकी जोडते.
8 void sendRedirect(String location) क्लायंटला वेगळ्या URL वर पुनर्निर्देशित करते.
String encodeRedirectURL(String url) sendRedirect पद्धतीमध्ये वापरण्यासाठी निर्दिष्ट URL एन्कोड करते.
10 String encodeURL(String url) सत्र आयडीसह, निर्दिष्ट URL एन्कोड करते.
अकरा void setContentType(String type) निकालाचा माइम प्रकार सेट करतो.
१२ void setContentLength(int len) प्रतिसाद मुख्य भागाची लांबी सेट करते.
13 void setCharacterEncoding(String charset) प्रतिसाद एन्कोडिंग सेट सेट करते.
14 void setBufferSize(int size) प्रतिसाद मुख्य भागासाठी बफर आकार सेट करते.
१५ boolean isCommitted() प्रतिसादात बफर आधीच लिहिले गेले आहे का ते तपासते.
16 void flushBuffer() प्रतिसादात बफरची सामग्री लिहितो.
१७ void reset() बफर, शीर्षलेख आणि प्रतिसाद कोडमध्ये संचयित केलेला सर्व डेटा रीसेट करते.
१८ void resetBuffer() प्रतिसाद बफर साफ करते.

इथल्या पद्धती अगदी क्षुल्लक आहेत. पण मी तुम्हाला खाली काही हायलाइट्स देईन.

बफर . तुमचा सर्व्हलेटचा प्रतिसाद बफरवर लिहिला जातो, वापरकर्त्याला लगेच पाठवला जात नाही. म्हणून, काही टप्प्यावर (उदाहरणार्थ, एखादी त्रुटी आढळल्यास), आपण बफरवर लिहिलेली प्रत्येक गोष्ट रीसेट (मिटवू) करू शकता. तुम्ही reset() पद्धतीला कॉल करू शकता आणि केवळ बफरची सामग्रीच नाही तर प्रतिसाद कोडसह शीर्षलेख देखील मिटवू शकता.

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 getWriter() पद्धत

आणि आता आपण आपला मजकूर प्रतिसाद मुख्य भाग म्हणून कसा लिहायचा ते शिकू. हे करण्यासाठी, वर्गात HttpServletResponseएक विशेष पद्धत आहे getWriter()जी ऑब्जेक्ट परत करते PrintStream. जर कोणी विसरला असेल तर, हा नावासह फील्डचा प्रकार आहे System.out.

सर्व्हलेट प्रतिसाद म्हणून काही मजकूर लिहिण्यासाठी, आपल्याला आवश्यक आहे:

  • वर कॉल करून प्रिंटस्ट्रीम ऑब्जेक्ट मिळवा response.getWriter().
  • प्रिंटस्ट्रीम ऑब्जेक्टवर तुम्हाला जे आवश्यक वाटते ते लिहा (सर्व डेटा बफरवर लिहिला जाईल).
  • close()प्रिंटस्ट्रीमवरील पद्धतीवर कॉल करून वापरकर्त्याला बफर पाठवा .

चला एक सर्व्हलेट लिहू जे दोन संख्या जोडते 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();
        }
    }
}
टिप्पण्या
  • लोकप्रिय
  • नवीन
  • जुने
टिप्पणी करण्यासाठी तुम्ही साईन इन केलेले असणे आवश्यक आहे
या पानावर अजून कोणत्याही टिप्पण्या नाहीत