HttpServletRequest & HttpServletResponse: HTTP-Specific Extensions
HttpServletRequest & HttpServletResponse: HTTP-Specific Extensions
Introduction to HttpServletRequest और HttpServletResponse
जब हम Java Servlets के साथ काम करते हैं, तो दो बहुत ही important interfaces सामने आते हैं — HttpServletRequest और HttpServletResponse। ये दोनों javax.servlet.http package में मौजूद हैं और web applications के core communication को handle करते हैं।
Simple शब्दों में कहें तो — जब client (जैसे browser) server से कुछ मांगता है (request भेजता है), तो HttpServletRequest उस request की सारी जानकारी रखता है। और जब server client को कुछ वापस भेजता है (response देता है), तो HttpServletResponse उस data को represent करता है।
Role of HttpServletRequest
HttpServletRequest का main काम है client द्वारा भेजे गए HTTP request की जानकारी सर्वर को देना। इस interface में बहुत सारे methods हैं जिनसे हम request से जुड़ी details जैसे parameter, header, cookies, method type आदि को access कर सकते हैं।
Important Functions of HttpServletRequest
- getParameter(String name): किसी form या query string से data निकालने के लिए।
- getHeader(String name): HTTP header value प्राप्त करने के लिए।
- getCookies(): Request में मौजूद cookies को access करने के लिए।
- getMethod(): यह बताता है कि request method कौन सी है (GET, POST, PUT, DELETE आदि)।
- getRequestURI(): Request का URI देता है।
- getRemoteAddr(): Client का IP address देता है।
Example Code of HttpServletRequest
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
String name = request.getParameter("username");
String browser = request.getHeader("User-Agent");
response.getWriter().println("Welcome " + name + "! You are using " + browser);
}
ऊपर के example में हमने request से parameter और header दोनों values लीं और response में show किया।
Role of HttpServletResponse
HttpServletResponse का काम होता है client को response भेजना। यह output stream और headers को control करता है ताकि client को सही format में response मिले।
इसके जरिए हम content type, status code, cookies और output data को define करते हैं।
Important Functions of HttpServletResponse
- setContentType(String type): Response का content type define करने के लिए (जैसे text/html, application/json)।
- getWriter(): Text-based output stream देता है (जैसे HTML या plain text लिखने के लिए)।
- sendRedirect(String url): किसी दूसरे URL पर redirect करने के लिए।
- setStatus(int code): HTTP status code सेट करने के लिए (जैसे 200, 404, 500)।
- addCookie(Cookie cookie): Response में cookie जोड़ने के लिए।
Example Code of HttpServletResponse
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h2>Data Received Successfully!</h2>");
}
इस code में हमने response type HTML set किया और client को HTML message भेजा।
Difference Between HttpServletRequest and HttpServletResponse
| Feature | HttpServletRequest | HttpServletResponse |
|---|---|---|
| Purpose | Client द्वारा भेजी गई जानकारी प्राप्त करना | Client को जानकारी वापस भेजना |
| Direction | Client → Server | Server → Client |
| Main Methods | getParameter(), getHeader(), getCookies() | setContentType(), sendRedirect(), getWriter() |
| Type | Input Stream (Incoming Data) | Output Stream (Outgoing Data) |
| Used In | Reading Request | Sending Response |
Request Lifecycle in Servlet
जब client कोई request भेजता है, तो servlet container (जैसे Tomcat) निम्न steps follow करता है:
- Client server को request भेजता है।
- Servlet container उस request को HttpServletRequest object में wrap करता है।
- Servlet का service() या doGet()/doPost() method call होता है।
- Servlet HttpServletResponse object का उपयोग करके client को data भेजता है।
Lifecycle Example
public class StudentServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
res.setContentType("text/html");
String name = req.getParameter("student");
res.getWriter().println("<h3>Hello " + name + "! Welcome to Servlet Programming.</h3>");
}
}
Headers और Status Codes in HttpServletResponse
HTTP response में headers और status codes बहुत important role निभाते हैं क्योंकि ये client को बताते हैं कि request का क्या result आया है।
Common HTTP Status Codes
| Status Code | Meaning |
|---|---|
| 200 | OK - Request successful |
| 302 | Found - Redirect किया गया |
| 404 | Not Found - Resource नहीं मिला |
| 500 | Internal Server Error |
Setting Headers Example
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Content-Language", "en-US");
इस example में हमने response header manually set किए ताकि browser को specific instructions मिलें।
Working with Cookies using HttpServletRequest & HttpServletResponse
Cookies छोटी जानकारी होती हैं जो client के browser में save की जाती हैं ताकि future requests में वही data वापस भेजा जा सके।
Set Cookie in Response
Cookie user = new Cookie("username", "Amit");
response.addCookie(user);
Get Cookie from Request
Cookie[] cookies = request.getCookies();
for (Cookie c : cookies) {
if (c.getName().equals("username")) {
System.out.println("User: " + c.getValue());
}
}
इस तरीके से हम server और client के बीच user information maintain कर सकते हैं।
Redirect और Forward Mechanism
Servlet में response को दो तरीके से control किया जा सकता है — redirect और forward।
1. sendRedirect()
यह client को बताता है कि किसी नए URL पर जाओ। यह completely new request बनाता है।
response.sendRedirect("home.jsp");
2. RequestDispatcher.forward()
यह same request और response को किसी दूसरे resource (जैसे JSP या servlet) को भेज देता है।
RequestDispatcher rd = request.getRequestDispatcher("profile.jsp");
rd.forward(request, response);
| Property | sendRedirect() | forward() |
|---|---|---|
| Request Type | New Request | Same Request |
| URL Change | Yes | No |
| Performance | Slower | Faster |
Content Type और Character Encoding
Response भेजते समय सही content type और character encoding देना बहुत जरूरी है ताकि browser data को सही format में दिखा सके।
Example:
response.setContentType("text/html; charset=UTF-8");
इससे browser को पता चलता है कि content HTML format में है और UTF-8 encoding का इस्तेमाल हुआ है।
InputStream और OutputStream Handling
Binary data (जैसे images, PDFs) भेजने के लिए हमें stream-based methods का उपयोग करना होता है।
Example: Sending Image File
FileInputStream file = new FileInputStream("image.jpg");
OutputStream out = response.getOutputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = file.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
file.close();
out.close();
इस तरीके से servlet किसी भी file को client को send कर सकता है।
Real Life Usage of HttpServletRequest & HttpServletResponse
- Login और Signup forms में data validation
- Cookies और Session tracking
- File upload और download system
- Redirect और forwarding mechanism
- Dynamic HTML content generation
Key Points for Exam
- HttpServletRequest → Request को represent करता है।
- HttpServletResponse → Response को represent करता है।
- दोनों classes javax.servlet.http package में होती हैं।
- GET और POST दोनों methods को handle करने के लिए इस्तेमाल होती हैं।
- Cookies, Headers, और Status codes के साथ काम करने में help करती हैं।