ServletRequest এবং ServletResponse হল সার্ভলেট API এর গুরুত্বপূর্ণ ইন্টারফেস, যা সার্ভলেটের মাধ্যমে HTTP রিকোয়েস্ট এবং রেসপন্স পরিচালনা করতে সহায়তা করে। এই ইন্টারফেসগুলোর মাধ্যমে সার্ভলেট ক্লায়েন্ট থেকে রিকোয়েস্ট গ্রহণ করে এবং রেসপন্স তৈরি করে পাঠায়।
1. ServletRequest Interface এর ভূমিকা
ServletRequest ইন্টারফেসটি ক্লায়েন্ট (যেমন ব্রাউজার) থেকে সার্ভলেটের কাছে আসা HTTP রিকোয়েস্টের তথ্য প্রদান করে। এটি সার্ভলেট কন্টেইনারের মধ্যে HTTP Request সম্পর্কিত সমস্ত ইনফরমেশন ধারণ করে এবং সার্ভলেট ক্লাসকে সেই ইনফরমেশন অ্যাক্সেস করতে সক্ষম করে।
ServletRequest ইন্টারফেসটি বিভিন্ন মেথড প্রদান করে যা রিকোয়েস্টের তথ্য পাওয়ার জন্য ব্যবহৃত হয়। এর মাধ্যমে, সার্ভলেট HTTP রিকোয়েস্টের বিভিন্ন অংশ যেমন প্যারামিটার, হেডার, আইপি অ্যাড্রেস, রিকোয়েস্টের টাইপ ইত্যাদি এক্সেস করতে পারে।
ServletRequest এর কিছু গুরুত্বপূর্ণ মেথড:
- getParameter(String name): HTTP রিকোয়েস্টের প্যারামিটার মান নেয়।
- getParameterMap(): সমস্ত প্যারামিটার এবং তাদের মানের একটি ম্যাপ রিটার্ন করে।
- getAttribute(String name): রিকোয়েস্ট থেকে অ্যাট্রিবিউটের মান নেয়।
- getHeader(String name): রিকোয়েস্ট হেডারের নির্দিষ্ট মান নেয়।
- getMethod(): HTTP রিকোয়েস্টের HTTP মেথড (GET, POST ইত্যাদি) প্রদান করে।
- getRemoteAddr(): ক্লায়েন্টের আইপি অ্যাড্রেস প্রদান করে।
উদাহরণ:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Retrieve request parameters
String userName = request.getParameter("user");
// Get request method (GET, POST)
String method = request.getMethod();
// Retrieve client IP address
String clientIP = request.getRemoteAddr();
// Send response
response.getWriter().println("User: " + userName);
response.getWriter().println("Method: " + method);
response.getWriter().println("Client IP: " + clientIP);
}
}
এখানে, request.getParameter(), request.getMethod(), এবং request.getRemoteAddr() মেথড ব্যবহার করে বিভিন্ন ধরনের তথ্য (যেমন প্যারামিটার, HTTP মেথড, এবং ক্লায়েন্ট আইপি) সংগ্রহ করা হয়েছে।
2. ServletResponse Interface এর ভূমিকা
ServletResponse ইন্টারফেসটি সার্ভলেটের মাধ্যমে ক্লায়েন্টে পাঠানো HTTP রেসপন্সের তথ্য ধারণ করে। এটি সার্ভলেটের মাধ্যমে ক্লায়েন্টকে ডাইনামিক ওয়েব কনটেন্ট (যেমন HTML, JSON, ইত্যাদি) পাঠানোর জন্য ব্যবহৃত হয়। ServletResponse এর মাধ্যমে সার্ভলেট বিভিন্ন রেসপন্স সেটিংস যেমন কনটেন্ট টাইপ, কনটেন্ট লেংথ, রেসপন্স কোড ইত্যাদি কনফিগার করতে পারে।
ServletResponse এর কিছু গুরুত্বপূর্ণ মেথড:
- setContentType(String type): রেসপন্সের কনটেন্ট টাইপ (যেমন
text/html,application/json) সেট করে। - getWriter(): রেসপন্স কনটেন্ট লেখার জন্য
PrintWriterঅবজেক্ট প্রদান করে। - setStatus(int sc): রেসপন্সের HTTP স্ট্যাটাস কোড সেট করে (যেমন
200,404,500)। - setHeader(String name, String value): রেসপন্স হেডারে নির্দিষ্ট নামের জন্য মান সেট করে।
- flushBuffer(): রেসপন্স বাফারটি ক্লিয়ার করে এবং ক্লায়েন্টে পাঠানোর জন্য ফ্লাশ করে।
উদাহরণ:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Set response content type
response.setContentType("text/html");
// Write a response message
response.getWriter().println("<h1>Hello, World! This is my first Servlet Response</h1>");
// Setting a custom header
response.setHeader("Custom-Header", "HeaderValue");
// Set response status
response.setStatus(HttpServletResponse.SC_OK);
}
}
এখানে, response.setContentType(), response.getWriter(), response.setHeader(), এবং response.setStatus() মেথড ব্যবহার করা হয়েছে।
ServletRequest এবং ServletResponse এর মধ্যে পার্থক্য
| Feature | ServletRequest | ServletResponse |
|---|---|---|
| Purpose | HTTP রিকোয়েস্টের তথ্য প্রদান করে, যেমন প্যারামিটার, হেডার ইত্যাদি। | HTTP রেসপন্স তৈরি করতে ব্যবহৃত হয়, যেমন কনটেন্ট টাইপ, স্ট্যাটাস কোড ইত্যাদি। |
| Usage | ক্লায়েন্টের রিকোয়েস্টের তথ্য সংগ্রহ করতে। | সার্ভলেট কন্টেন্ট রিটার্ন করার জন্য এবং ক্লায়েন্টে পাঠানোর জন্য। |
| Key Methods | getParameter(), getHeader(), getMethod(), getRemoteAddr() | setContentType(), getWriter(), setHeader(), setStatus() |
| Interaction | ক্লায়েন্ট থেকে রিকোয়েস্ট নিয়ে সার্ভলেট কন্টেইনারে প্রক্রিয়া করে। | সার্ভলেট থেকে ক্লায়েন্টকে রেসপন্স প্রেরণ করা হয়। |
| Context | রিকোয়েস্টের ডাটা (যেমন HTTP প্যারামিটার, হেডার) ধারণ করে। | রেসপন্সের তথ্য (যেমন কনটেন্ট, স্ট্যাটাস) ধারণ করে। |
Conclusion
ServletRequest এবং ServletResponse হল সার্ভলেটের দুইটি অত্যন্ত গুরুত্বপূর্ণ ইন্টারফেস যা ওয়েব অ্যাপ্লিকেশনের রিকোয়েস্ট এবং রেসপন্স হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়। ServletRequest ক্লায়েন্ট থেকে আসা রিকোয়েস্টের বিভিন্ন তথ্য (যেমন প্যারামিটার, হেডার, HTTP মেথড) সংগ্রহ করে এবং ServletResponse সেই রিকোয়েস্টের ভিত্তিতে ডাইনামিক রেসপন্স তৈরি করে পাঠানোর জন্য ব্যবহৃত হয়। এই দুটি ইন্টারফেস সার্ভলেট প্রোগ্রামিংয়ের মূল অংশ, যেগুলোর মাধ্যমে আপনি HTTP রিকোয়েস্ট এবং রেসপন্সের সাথে ইন্টারঅ্যাক্ট করতে পারেন।
Read more