Feedback Form

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 और HttpServletResponse objects 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 आता है।