Feedback Form

Handling HTTP Requests & Responses in Servlets: Full Guide

Handling HTTP Requests & Responses in Servlets: Full Guide

Introduction

जब हम Java में Web Application बनाते हैं, तो Servlets सबसे important role निभाते हैं। Servlet basically server-side program होता है जो client से आने वाले HTTP Requests को handle करता है और proper HTTP Response generate करता है। इस process को समझना हर Computer Science या MCA student के लिए बहुत ज़रूरी है क्योंकि exam में ये topic बार-बार पूछा जाता है।

Servlets का काम simple है — Client (Browser) से request receive करना, उसे process करना और फिर response वापस भेजना। अब चलिए step-by-step समझते हैं कि Servlet में HTTP request और response कैसे handle किए जाते हैं।

What is HTTP Request?

HTTP Request वो message होता है जो client (जैसे browser) server को भेजता है जब user कोई action करता है — जैसे form submit करना या link click करना। इस request में बहुत सारी information होती है जैसे URL, parameters, headers, method type (GET, POST) आदि।

Types of HTTP Requests

  • GET Request: Data को URL के साथ भेजा जाता है। ये lightweight होता है और mainly data को fetch करने के लिए use किया जाता है।
  • POST Request: Data को body में भेजा जाता है, इसलिए ये secure और large data transfer के लिए use किया जाता है।

Example of GET and POST in Servlet

Servlet में दो main methods होते हैं जो इन requests को handle करते हैं — doGet() और doPost()

public class MyServlet extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
    res.setContentType("text/html");
    PrintWriter out = res.getWriter();
    out.println("This is GET Request Handling");
  }

  public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException {
    res.setContentType("text/html");
    PrintWriter out = res.getWriter();
    out.println("This is POST Request Handling");
  }
}

How to Read Data from Request Object

HttpServletRequest object का use करके हम client से भेजे गए data को read करते हैं। अगर form से कोई parameter भेजा गया है, तो हम getParameter() method का use करते हैं।

String username = req.getParameter("user");
String password = req.getParameter("pass");

Example के तौर पर, अगर HTML form इस तरह है:

<form action="LoginServlet" method="post">
Username: <input type="text" name="user"><br>
Password: <input type="password" name="pass"><br>
<input type="submit" value="Login">
</form>

तो Servlet में getParameter() के through हम user input read कर सकते हैं।

Working of HttpServletResponse

Servlet का दूसरा important object होता है HttpServletResponse। इसका काम होता है client को output भेजना। Output text, HTML page, JSON data या file कुछ भी हो सकता है।

Response object में हम content type set कर सकते हैं ताकि browser को पता चले कि कौन सा data type भेजा जा रहा है।

res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<h3>Welcome to Servlet Response Example</h3>");

Common Response Methods

  • setContentType(String type): Response content type set करने के लिए।
  • sendRedirect(String url): किसी दूसरी page पर redirect करने के लिए।
  • setStatus(int code): HTTP status code set करने के लिए।
  • addCookie(Cookie cookie): Client browser में cookie भेजने के लिए।

Understanding Request Flow in Servlet

जब कोई client URL hit करता है, तो flow कुछ इस तरह चलता है:

  • 1️⃣ Client browser request भेजता है server को।
  • 2️⃣ Web container (जैसे Tomcat) उस request को servlet तक पहुँचाता है।
  • 3️⃣ Servlet request को process करता है (database access, logic execution)।
  • 4️⃣ Servlet response create करके client को वापस भेजता है।

Request and Response Headers

हर HTTP communication में headers बहुत important role निभाते हैं। ये additional information भेजने के लिए use होते हैं जैसे content type, browser info, language, आदि।

Header Type Description
Content-Type Data format define करता है (जैसे text/html, application/json)
User-Agent Browser या client की जानकारी देता है
Accept-Language Preferred language बताता है

Redirecting and Forwarding Requests

Servlet में हम दो तरीके से request को दूसरे resource पर भेज सकते हैं:

1. sendRedirect()

ये client-side redirection होती है। मतलब browser को नई URL की तरफ redirect किया जाता है।

res.sendRedirect("home.html");

2. RequestDispatcher.forward()

ये server-side redirection होती है, जहाँ request और response दोनों अगले resource को forward किए जाते हैं।

RequestDispatcher rd = req.getRequestDispatcher("dashboard.jsp");
rd.forward(req, res);

Handling Form Data

Form data handle करना Servlet का सबसे common use case है। Example के लिए, suppose हमारे पास registration form है।

String name = req.getParameter("name");
String email = req.getParameter("email");
String gender = req.getParameter("gender");
out.println("Welcome " + name + ", your email is " + email);

Sending JSON Response

आज के modern web apps में JSON format बहुत popular है। Servlet से JSON response भेजने के लिए content type को application/json set किया जाता है।

res.setContentType("application/json");
PrintWriter out = res.getWriter();
out.print("{\"status\":\"success\", \"message\":\"Data received\"}");

HTTP Status Codes

जब server response भेजता है, तो साथ में status code भी भेजता है ताकि client को पता चले कि क्या हुआ।

Status Code Meaning
200 OK – Request successfully processed
404 Not Found – Resource unavailable
500 Internal Server Error – Server-side problem
302 Found – Redirecting to another resource

Request Attributes in Servlet

Request attributes का use तब किया जाता है जब हमें request के साथ additional data forward करना हो।

req.setAttribute("userRole", "admin");
RequestDispatcher rd = req.getRequestDispatcher("admin.jsp");
rd.forward(req, res);

Difference Between doGet() and doPost()

Basis doGet() doPost()
Data Transmission URL के साथ Body में
Security Less Secure More Secure
Data Limit Limited Unlimited
Use Case Fetch Data Submit Data

Handling Cookies and Sessions

Servlets में cookies और sessions दोनों का use किया जाता है ताकि user की information को track किया जा सके।

Cookie Example:

Cookie ck = new Cookie("user", "Ravi");
res.addCookie(ck);

Session Example:

HttpSession session = req.getSession();
session.setAttribute("user", "Ravi");

Important Methods of HttpServletRequest

  • getParameter(String name) – Form parameter fetch करने के लिए
  • getHeader(String name) – Header value पाने के लिए
  • getMethod() – HTTP method type (GET/POST) जानने के लिए
  • getRequestURI() – Requested URI पाने के लिए

Best Practices for Handling Requests and Responses

  • Always set proper content type for response।
  • Client data को validate करें before processing।
  • Exception handling हमेशा करें ताकि server crash न हो।
  • Response writer को close करना न भूलें।
  • Use RequestDispatcher for internal navigation।

Notes (Exam-Specific Points)

  • Servlet हमेशा javax.servlet.http.HttpServlet class को extend करता है।
  • doGet() और doPost() methods request और response को handle करते हैं।
  • Form data को getParameter() method से read किया जाता है।
  • Response भेजने के लिए PrintWriter का use किया जाता है।
  • Redirection के लिए sendRedirect() और forwarding के लिए RequestDispatcher use होता है।
  • HttpServletResponse का काम client को output भेजना है।
  • Status code 200 मतलब request successful है, जबकि 404 मतलब resource नहीं मिला।