CodeGym /Java Course /মডিউল 3 /শেপিং সার্ভলেট প্রতিক্রিয়া

শেপিং সার্ভলেট প্রতিক্রিয়া

মডিউল 3
লেভেল 12 , পাঠ 2
বিদ্যমান

3.1 HttpServletResponse ক্লাস

আপনার সার্লেট পদ্ধতিতে কল করার পরে service(), ওয়েব কন্টেইনারটি ক্লায়েন্টের উপর ভিত্তি করে একটি প্রতিক্রিয়া তৈরি করবে HttpServletResponse। সুতরাং আপনি যদি কোনোভাবে ক্লায়েন্টের প্রতিক্রিয়া প্রভাবিত করতে চান, তাহলে আপনার এই বস্তুটি সংশোধন করা উচিত।

সার্ভার প্রতিক্রিয়া তিনটি অংশ নিয়ে গঠিত:

  • স্ট্যাটাস লাইন (উদাহরণস্বরূপ: 200 ঠিক আছে)
  • হেডার
  • প্রতিক্রিয়া শরীর

আর ক্লাস পদ্ধতিগুলোও HttpServletResponseকি ৩টি দলে বিভক্ত? প্রায়:

পদ্ধতি বর্ণনা
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() প্রতিক্রিয়া বাফার সাফ করে।

এখানকার পদ্ধতিগুলো খুবই তুচ্ছ। তবে আমি আপনাকে নীচে কয়েকটি হাইলাইট দেব।

বাফার _ আপনার servlet এর প্রতিক্রিয়া একটি বাফারে লেখা হয়, অবিলম্বে ব্যবহারকারীকে পাঠানো হয় না। অতএব, কিছু পর্যায়ে (যদি, উদাহরণস্বরূপ, একটি ত্রুটি ঘটে), আপনি বাফারে লেখা সবকিছু রিসেট (মুছে ফেলতে) করতে পারেন। আপনি এমনকি reset() পদ্ধতিতে কল করতে পারেন এবং শুধুমাত্র বাফারের বিষয়বস্তুই নয়, প্রতিক্রিয়া কোড সহ শিরোনামগুলিও মুছে ফেলতে পারেন।

3.2 পুনঃনির্দেশ ()

দ্বিতীয় গুরুত্বপূর্ণ পয়েন্ট হল পুনর্নির্দেশ। যদি আপনার servlet ক্লায়েন্টকে অন্য ইউআরএলে রিডাইরেক্ট করার সিদ্ধান্ত নেয়, তাহলে আপনাকে কোনোভাবে এই ইউআরএলটি ক্লায়েন্টের কাছে পাঠাতে হবে। এটি ব্যবহার করে করা যেতে পারে sendRedirect

কিন্তু একটি গুরুত্বপূর্ণ nuance আছে। 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();
        }
    }
}


মন্তব্য
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION