HttpServletResponse: Status Codes, Headers, Cookies, and OutputStream
HttpServletResponse: Status Codes, Headers, Cookies, and OutputStream
Introduction
जब हम Java Servlet के साथ web development करते हैं, तो HttpServletResponse एक बहुत ही important interface होता है जो client (browser) को response भेजने का काम करता है। यह servlet को यह decide करने देता है कि response में क्या भेजना है — जैसे status code, headers, cookies या actual data (HTML, text, JSON आदि)।
साधारण शब्दों में कहें तो HttpServletResponse web server और browser के बीच communication का bridge है जो server से user तक proper information पहुँचाने में help करता है।
Definition and Purpose of HttpServletResponse
HttpServletResponse interface javax.servlet.http package में होता है। इसका main काम है — client को भेजे जाने वाले response को control करना। जब servlet कोई request process करता है, तब यह object developer को automatically provide किया जाता है ताकि वो उसके through client को desired output भेज सके।
इसका use server-side से किया जाता है ताकि हम content type, response headers, cookies और output stream को manage कर सकें।
Important Methods of HttpServletResponse
नीचे कुछ commonly used methods दिए गए हैं जो exam और practical दोनों में पूछे जाते हैं:
| Method | Description |
|---|---|
void setStatus(int sc) |
HTTP status code set करता है जैसे 200, 404, 500 आदि। |
void setHeader(String name, String value) |
Response header जोड़ने या modify करने के लिए use होता है। |
void addCookie(Cookie cookie) |
Client के browser में cookie add करता है। |
PrintWriter getWriter() |
Character data (text, HTML) भेजने के लिए writer object देता है। |
ServletOutputStream getOutputStream() |
Binary data (image, pdf, file) भेजने के लिए stream देता है। |
void sendRedirect(String location) |
Client को किसी दूसरी URL पर redirect करने के लिए use होता है। |
void setContentType(String type) |
Response content का MIME type set करता है जैसे text/html या application/json। |
HTTP Status Codes
HTTP status codes वो signals होते हैं जो server browser को भेजता है ताकि उसे पता चल सके कि request successful हुई या नहीं। ये codes numerical values होते हैं और हर code का एक particular meaning होता है। इन्हें 5 categories में divide किया गया है।
1xx: Informational
- 100 Continue: Request receive हो गई है, client आगे data भेज सकता है।
2xx: Success
- 200 OK: Request successfully process हो गई है।
- 201 Created: नया resource successfully create हुआ।
3xx: Redirection
- 301 Moved Permanently: Resource permanently new location पर move हो गया।
- 302 Found: Temporary redirection।
4xx: Client Error
- 400 Bad Request: Request में syntax error या invalid parameter।
- 401 Unauthorized: Authentication required है।
- 403 Forbidden: Access denied है।
- 404 Not Found: Requested page या resource नहीं मिला।
5xx: Server Error
- 500 Internal Server Error: Server में कोई unexpected error हुआ।
- 503 Service Unavailable: Server temporarily unavailable है।
Headers in HttpServletResponse
Headers का use additional information भेजने के लिए किया जाता है जैसे content type, caching policy, date, location आदि। Servlet developer setHeader() और addHeader() methods से headers को manage कर सकता है।
Common Response Headers
| Header Name | Purpose |
|---|---|
| Content-Type | Response data का type define करता है जैसे text/html या image/jpeg। |
| Content-Length | Response body की total length बताता है। |
| Cache-Control | Caching policy define करता है (no-cache, public, private)। |
| Location | Redirect के लिए new URL specify करता है। |
| Set-Cookie | Browser में cookie store करने के लिए use होता है। |
Example: Setting Headers
response.setContentType("text/html");
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
Cookies in HttpServletResponse
Cookies small text files होते हैं जो client-side पर store रहते हैं ताकि server user की information को याद रख सके। इन्हें mainly session tracking, authentication और personalization के लिए use किया जाता है।
Creating and Adding a Cookie
Cookie userCookie = new Cookie("username", "Ravi");
userCookie.setMaxAge(60*60*24); // 1 day
response.addCookie(userCookie);
यह code browser में username नाम की cookie set कर देता है जो 24 घंटे तक valid रहेगी। जब user दोबारा request भेजेगा तो यह cookie automatically server को भेजी जाएगी।
Important Methods of Cookie Class
| Method | Description |
|---|---|
setMaxAge(int seconds) |
Cookie का lifetime set करता है। |
getName() |
Cookie का नाम return करता है। |
getValue() |
Cookie की value return करता है। |
setPath(String uri) |
Cookie किस path पर valid रहेगी, यह बताता है। |
OutputStream in HttpServletResponse
जब हमें text या HTML नहीं बल्कि binary data (जैसे image, pdf या excel file) भेजनी हो, तब हम getOutputStream() method का use करते हैं। यह ServletOutputStream object return करता है जो binary format में data भेजने के लिए use किया जाता है।
Example: Sending Binary Data
ServletOutputStream out = response.getOutputStream();
FileInputStream file = new FileInputStream("D:/files/sample.pdf");
response.setContentType("application/pdf");
int data;
while((data = file.read()) != -1){
out.write(data);
}
file.close();
out.close();
ऊपर का example एक simple PDF file client के browser पर भेजने का तरीका दिखाता है।
Difference between getWriter() and getOutputStream()
| getWriter() | getOutputStream() |
|---|---|
| Text-based content (HTML, JSON, plain text) भेजने के लिए। | Binary data (images, audio, video, files) भेजने के लिए। |
| Returns PrintWriter object. | Returns ServletOutputStream object. |
| Character encoding handle करता है। | Raw byte stream handle करता है। |
sendRedirect() vs forward()
sendRedirect() और RequestDispatcher.forward() दोनों का use एक page से दूसरे page पर जाने के लिए होता है, लेकिन दोनों में कुछ important differences हैं।
| Feature | sendRedirect() | forward() |
|---|---|---|
| Request Type | New request generate करता है। | Same request object pass करता है। |
| Location | External website या same server दोनों पर redirect कर सकता है। | Only same server के अंदर काम करता है। |
| Client Involvement | Client को redirect notice भेजी जाती है। | Client को पता भी नहीं चलता कि page change हुआ। |
| Performance | थोड़ा slow क्योंकि new request बनती है। | Fast क्योंकि same request-forward होता है। |
Example Servlet using HttpServletResponse
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ResponseDemoServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
response.setHeader("Cache-Control", "no-cache, no-store");
Cookie cookie = new Cookie("user", "Rahul");
response.addCookie(cookie);
out.println("<h2>Welcome, HttpServletResponse Example</h2>");
out.println("Status Code: " + response.getStatus());
out.close();
}
}
Key Points for Exam
- HttpServletResponse client को response भेजने के लिए use होता है।
- setStatus() method status code set करने के लिए होता है।
- setHeader() और addHeader() headers जोड़ने के लिए use होते हैं।
- addCookie() cookies भेजने के लिए।
- getWriter() text data भेजने के लिए, getOutputStream() binary data के लिए।
- sendRedirect() redirection के लिए important method है।
- Response headers और cookies SEO और security दोनों में role निभाते हैं।
Short Notes for Quick Revision
- Interface: javax.servlet.http.HttpServletResponse
- Primary Purpose: Client को response control करना
- Common Methods: setStatus(), setHeader(), addCookie(), getWriter()
- Status Codes: 200, 404, 500 – सबसे ज़्यादा पूछे जाते हैं।
- Cookies: Small data stored on client side for tracking sessions।
- OutputStream: Binary data send करने के लिए।