Feedback Form

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
200OK - Request successful
302Found - Redirect किया गया
404Not Found - Resource नहीं मिला
500Internal 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);
PropertysendRedirect()forward()
Request TypeNew RequestSame Request
URL ChangeYesNo
PerformanceSlowerFaster

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 करती हैं।