Servlet Request & Response: Handling Client Interaction
Servlet Request & Response: Handling Client Interaction
Servlet Request & Response क्या है?
जब भी कोई client (जैसे browser) web server को request भेजता है, तो Servlet container उस request को handle करने के लिए दो important objects बनाता है —
HttpServletRequest और HttpServletResponse।
इन दोनों का काम होता है client और server के बीच communication को manage करना।
साधारण शब्दों में कहें तो Request object client से data लेने का काम करता है और Response object client को output वापस भेजने का।
HttpServletRequest Object
HttpServletRequest class का object Servlet container अपने आप बनाता है जब कोई client HTTP request भेजता है।
ये object client द्वारा भेजे गए सभी data को contain करता है — जैसे form data, headers, cookies, और parameters।
इसका use server side पर request से information निकालने के लिए किया जाता है।
मुख्य काम (Functions) of HttpServletRequest
- Client द्वारा भेजे गए parameters को access करना
- Request headers और cookies पढ़ना
- Client information जैसे IP address या browser type प्राप्त करना
- Session data manage करना
- Input stream के जरिए file data या binary data read करना
Common Methods of HttpServletRequest
| Method | Description |
|---|---|
getParameter(String name) |
Form data या query string से parameter value निकालता है। |
getParameterValues(String name) |
अगर multiple values हों (जैसे checkbox), तो सभी values array में return करता है। |
getHeader(String name) |
Request header की specific value return करता है। |
getCookies() |
Client द्वारा भेजे गए सभी cookies return करता है। |
getMethod() |
HTTP method (GET या POST) बताता है। |
getRemoteAddr() |
Client का IP address return करता है। |
Example: Using HttpServletRequest
नीचे एक simple example दिया गया है जो user से form data लेकर उसे display करता है:
<form action="WelcomeServlet" method="post">
Name: <input type="text" name="username"><br>
Email: <input type="text" name="email"><br>
<input type="submit" value="Submit">
</form>
Servlet code:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
String name = request.getParameter("username");
String email = request.getParameter("email");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h3>Welcome, " + name + "</h3>");
out.println("Your email: " + email);
}
HttpServletResponse Object
HttpServletResponse object client को response भेजने के लिए use किया जाता है।
Servlet container इसे भी automatically create करता है।
इसका काम होता है response data, content type और status code को define करना ताकि browser को सही output मिले।
मुख्य काम (Functions) of HttpServletResponse
- Client को text, HTML या binary data भेजना
- Response headers और cookies set करना
- Redirect या error response भेजना
- Content type और status code define करना
Common Methods of HttpServletResponse
| Method | Description |
|---|---|
setContentType(String type) |
Response का MIME type set करता है (जैसे text/html, application/json)। |
getWriter() |
Client को text response भेजने के लिए PrintWriter object return करता है। |
sendRedirect(String url) |
Client को किसी दूसरे page या URL पर redirect करता है। |
setHeader(String name, String value) |
Response header को manually set करता है। |
addCookie(Cookie cookie) |
Client browser में cookie भेजने के लिए use होता है। |
Example: Sending Response to Client
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h2>Response from Servlet</h2>");
out.println("Hello, this is dynamic content generated by Servlet!");
}
Request और Response का Lifecycle
जब client server को request भेजता है, तो servlet container इन steps को follow करता है:
- Client कोई URL या form submit करता है।
- Servlet container
HttpServletRequestऔरHttpServletResponseobjects create करता है। - Container उस request को Servlet class के
service()method को भेजता है। - Servlet method request से data process करता है और response object में output set करता है।
- Container response को वापस client (browser) को भेज देता है।
Simple Flow Diagram (Textual)
Client → Request → Servlet Container → Servlet Processing → Response → Client
Headers, Cookies और Session Management
1. Headers Handling
Request headers में browser, language, caching और authentication जैसी details होती हैं।
Servlet इन्हें getHeader() method से access कर सकता है।
String agent = request.getHeader("User-Agent");
String language = request.getHeader("Accept-Language");
2. Cookies Handling
Cookies client side पर छोटी information store करने के लिए use होती हैं, जैसे username या session ID।
// Cookie बनाना और response में add करना
Cookie cookie = new Cookie("user", "Amit");
response.addCookie(cookie);
// Cookies पढ़ना
Cookie[] cookies = request.getCookies();
for(Cookie c : cookies){
out.println(c.getName() + " = " + c.getValue());
}
3. Session Handling
Session object का use एक user से जुड़ी information को multiple requests में maintain करने के लिए किया जाता है।
Servlet session को HttpSession interface से manage करता है।
HttpSession session = request.getSession();
session.setAttribute("username", "Rahul");
String user = (String)session.getAttribute("username");
Response Status Codes
HTTP response codes यह बताते हैं कि server ने request को कैसे process किया।
Servlets में इन codes को setStatus() method से set किया जा सकता है।
| Status Code | Meaning |
|---|---|
| 200 | OK – Request successfully processed |
| 302 | Redirect – Client को दूसरे URL पर भेजा गया |
| 404 | Not Found – Requested resource नहीं मिली |
| 500 | Internal Server Error – Server में कोई problem हुई |
Example: Setting Custom Status
response.setStatus(HttpServletResponse.SC_OK);
response.setHeader("Custom-Header", "ServletDemo");
Content Type और Output Streams
जब Servlet response generate करता है, तो सबसे पहले content type define किया जाता है ताकि browser को पता चले data का format क्या है।
text/html→ HTML content के लिएtext/plain→ Simple text के लिएapplication/json→ JSON data के लिएapplication/pdf→ PDF files के लिए
Example: Binary Data भेजना
response.setContentType("image/jpeg");
ServletOutputStream out = response.getOutputStream();
FileInputStream fis = new FileInputStream("photo.jpg");
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
fis.close();
out.close();
Redirect और Forward में अंतर
Servlet में दो तरीके होते हैं दूसरे page पर जाने के — sendRedirect() और RequestDispatcher.forward()।
| Feature | sendRedirect() | forward() |
|---|---|---|
| Processing | Client को new request भेजनी पड़ती है | Same request और response object इस्तेमाल होता है |
| URL Change | Browser URL बदल जाता है | Browser URL वही रहता है |
| Speed | थोड़ी slow क्योंकि दो बार request जाती है | Faster क्योंकि server-side पर होता है |
Important Points for Exams
HttpServletRequest→ client से data लेने के लिए।HttpServletResponse→ client को data भेजने के लिए।- दोनों objects servlet container द्वारा automatically बनाए जाते हैं।
getParameter()→ Form data access करने के लिए।setContentType()→ Response format define करने के लिए।sendRedirect()औरforward()में major difference URL और request handling का है।
Servlet Request & Response Notes (For Revision)
- Servlet communication के लिए request-response model का use करता है।
- Request object client से आने वाली details रखता है।
- Response object server से जाने वाली output रखता है।
- Cookies और sessions client data को track करने में help करते हैं।
- Headers HTTP request और response दोनों में metadata provide करते हैं।
- Servlets dynamic web pages generate करने के लिए perfect tool हैं।
- Exam में अक्सर
getParameter()औरgetAttribute()के अंतर पर question आता है।