Sending Response: JspWriter, setContentType(), and Redirects
Sending Response in JSP: JspWriter, setContentType(), and Redirects
जब भी हम JSP (Java Server Pages) में dynamic web page बनाते हैं, तो client को response भेजना बहुत ज़रूरी होता है। Response का मतलब है — server द्वारा client (browser) को भेजी गई information। इस process को समझने के लिए हमें तीन main concepts जानने होंगे: JspWriter, setContentType(), और Redirects। ये तीनों methods response handling के core part हैं और हर JSP developer को अच्छे से आने चाहिए, खासकर exam point of view से।
What is JspWriter?
JSP में JspWriter एक predefined object होता है, जो client के browser में output भेजने का काम करता है। ये object JSP implicit objects में से एक है, और इसका use हम HTML content या dynamic data को client तक पहुँचाने के लिए करते हैं।
Basic Definition
JspWriter एक buffered character output stream है जो response body को write करने के लिए use होती है। ये javax.servlet.jsp.JspWriter class की object होती है और इसका default name out होता है।
Syntax
out.println("Hello JSP!");
ऊपर दिए गए example में out object का use करके “Hello JSP!” client browser में print किया गया है।
Important Methods of JspWriter
JspWriter class में कई useful methods होती हैं जो response को control करने में help करती हैं।
| Method | Description |
|---|---|
| print() | Simple text या data output करता है |
| println() | Output के बाद newline add करता है |
| clear() | Buffer को clear करता है बिना flush किए |
| clearBuffer() | Buffer को पूरी तरह empty करता है |
| flush() | Buffered data को client तक भेजता है |
| getBufferSize() | Buffer का size बताता है |
| getRemaining() | Buffer में बची space बताता है |
Example: Printing Output using JspWriter
<%
out.println("Welcome to JSP Response Handling!");
out.print("Today is: " + new java.util.Date());
%>
ऊपर दिए गए code में हमने out object का use करके message और date print की है। ये data client के browser में दिखाई देगा।
Understanding setContentType() Method
अब बात करते हैं setContentType() की। ये method response का content type define करने के लिए use होती है। जब server client को response भेजता है, तो browser को बताना जरूरी होता है कि भेजा गया data किस format में है — जैसे text/html, application/json, text/plain आदि।
Definition
response.setContentType() method का use MIME type set करने के लिए किया जाता है ताकि browser सही तरीके से data interpret कर सके।
Syntax
response.setContentType("text/html");
Example
<%
response.setContentType("text/html");
out.println("<h3>Response Type Set to HTML</h3>");
%>
इस example में हमने response type को “text/html” set किया है ताकि browser HTML के रूप में data render कर सके।
Common MIME Types
| Content Type | Use |
|---|---|
| text/html | HTML document के लिए |
| text/plain | Plain text data के लिए |
| application/json | JSON data के लिए |
| application/pdf | PDF files के लिए |
| image/png | PNG images के लिए |
इस method का use करना बहुत जरूरी होता है क्योंकि गलत content type set करने से browser data को सही तरीके से नहीं दिखा पाता।
What is sendRedirect()?
कई बार हमें client को किसी दूसरी page या website पर redirect करना पड़ता है। JSP में ये काम response.sendRedirect() method से किया जाता है। ये method client को एक new request भेजने के लिए instruct करता है।
Definition
sendRedirect() एक client-side redirect method है, जो browser को नया URL access करने के लिए कहता है। इसका मतलब है कि client browser दो बार request भेजता है — एक बार original JSP को और दूसरी बार new URL को।
Syntax
response.sendRedirect("newPage.jsp");
Example
<%
String user = request.getParameter("user");
if(user == null || user.equals("")) {
response.sendRedirect("login.jsp");
} else {
out.println("Welcome, " + user);
}
%>
ऊपर दिए गए code में अगर user parameter empty है तो user को login.jsp page पर redirect किया जाएगा, अन्यथा welcome message दिखेगा।
How sendRedirect() Works Internally
- Server response header में Location field भेजता है।
- Browser उस URL को detect करता है और automatically new request भेजता है।
- New request का मतलब है — previous request data खो जाता है।
Difference between sendRedirect() and forward()
| Feature | sendRedirect() | forward() |
|---|---|---|
| Type | Client-side Redirect | Server-side Forward |
| Request Count | 2 Requests | 1 Request |
| URL Change | Yes, URL changes in browser | No, URL remains same |
| Performance | Slower (2 round trips) | Faster (single trip) |
| Use Case | External or different web application | Same web application |
Difference between JspWriter and Response Object
कई बार students को confusion होता है कि out object (JspWriter) और response object में क्या फर्क है। चलिए इसे एक table से समझते हैं।
| Feature | JspWriter (out) | Response Object |
|---|---|---|
| Purpose | Output भेजने के लिए | Client को response control करने के लिए |
| Class | javax.servlet.jsp.JspWriter | javax.servlet.http.HttpServletResponse |
| Type | Character Stream | Response Controller |
| Main Methods | print(), println(), flush() | setContentType(), sendRedirect() |
Buffering in JspWriter
JspWriter का एक important concept है buffering। इसका मतलब है कि data तुरंत browser तक नहीं भेजा जाता, बल्कि पहले memory buffer में store होता है। जब buffer भर जाता है या explicitly flush() call किया जाता है, तब data browser को भेजा जाता है।
Advantages of Buffering
- Performance बेहतर होती है क्योंकि बार-बार I/O operation नहीं होता।
- अगर कोई error आती है तो response भेजने से पहले उसे handle किया जा सकता है।
- Dynamic content को modify करना आसान होता है।
Example
<%
out.println("Starting Response...");
out.flush(); // Forces data to be sent
out.println("This part is after flush.");
%>
Setting Response Status and Headers
Response को control करने के लिए response object में और भी कई methods होती हैं जिनसे हम status code और headers set कर सकते हैं।
Example: Setting Status Code
<%
response.setStatus(200); // OK
out.println("Status: 200 OK");
%>
Example: Setting Custom Header
<%
response.setHeader("Cache-Control", "no-cache");
out.println("Header Set Successfully");
%>
Common Status Codes
| Code | Meaning |
|---|---|
| 200 | OK – Request successful |
| 302 | Found – Redirected |
| 404 | Not Found |
| 500 | Internal Server Error |
Best Practices for JSP Response Handling
- Always call setContentType() at the beginning of JSP.
- Use out.flush() carefully — once flushed, response can't be modified.
- Redirects should be used before any output is sent to browser.
- Keep output buffer size appropriate for performance.
- Use response.setHeader() for caching or security control.
Important Points for Exam
- JspWriter का default object name “out” होता है।
- setContentType() response का MIME type define करता है।
- sendRedirect() दो बार request भेजता है — ये client-side redirect होता है।
- forward() server-side होता है और URL नहीं बदलता।
- Once out.flush() हो गया तो redirect या forward नहीं किया जा सकता।
Quick Revision Notes
| Concept | Description |
|---|---|
| JspWriter | Client को data भेजने के लिए output stream |
| setContentType() | Response का MIME type set करता है |
| sendRedirect() | Client को दूसरे page पर redirect करता है |
| flush() | Buffered data को client तक भेजता है |
| forward() | Request को internally दूसरे resource को भेजता है |
| response.setStatus() | HTTP status code define करता है |
Exam Oriented Full Example
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%
response.setContentType("text/html");
String user = request.getParameter("name");
if(user == null || user.trim().equals("")) {
response.sendRedirect("error.jsp");
} else {
out.println("<h2>Welcome, " + user + "</h2>");
out.println("Your response type is: " + response.getContentType());
}
%>
इस example में अगर user parameter missing है तो user को error.jsp पर redirect किया जाता है, वरना welcome message दिखाया जाता है। ये typical exam question pattern है।