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 के लिएRequestDispatcheruse होता है। - HttpServletResponse का काम client को output भेजना है।
- Status code 200 मतलब request successful है, जबकि 404 मतलब resource नहीं मिला।