Feedback Form

JSP Request and Response: Dynamic Processing

JSP Request and Response: Dynamic Processing

जब हम Java Web Application बनाते हैं, तो सबसे ज़रूरी part होता है — Client और Server के बीच communication। JSP (Java Server Pages) इस communication को handle करने के लिए Request और Response objects का use करता है। ये दोनों objects Servlet container के द्वारा manage किए जाते हैं और dynamic data process करने में help करते हैं।

JSP में Request और Response क्या होते हैं?

JSP page पर जब भी कोई user request भेजता है (जैसे form submit करना या link पर click करना), वो data server तक पहुँचता है। Server उस request को process करता है और फिर user को result के रूप में response भेजता है।

  • Request Object: Client से आने वाले data को receive करता है।
  • Response Object: Server से वापस Client को data भेजता है।

दोनों objects JSP में javax.servlet.http package के अंदर defined हैं और automatically available रहते हैं।

Request Object in JSP

Request Object का use client से आने वाले data को read करने के लिए किया जाता है। जब user किसी HTML form को submit करता है, तो उस form के data को JSP page के अंदर request object से access किया जाता है।

Common Methods of request Object

Method Description
getParameter(String name) Form field के value को return करता है।
getParameterValues(String name) Multiple values (जैसे checkboxes) को return करता है।
getHeader(String name) HTTP header की specific value को return करता है।
getMethod() HTTP method (GET या POST) को बताता है।
getRemoteAddr() Client का IP address देता है।
getRequestURI() Requested URI return करता है।

Example: Request Object का Use

मान लीजिए हमारे पास एक simple HTML form है जो user का name और email लेता है —

<form action="welcome.jsp" method="post">
Name: <input type="text" name="uname"><br>
Email: <input type="text" name="email"><br>
<input type="submit" value="Submit">
</form>

अब JSP page पर हम इन values को प्राप्त कर सकते हैं —

<%
String name = request.getParameter("uname");
String email = request.getParameter("email");
out.println("Welcome " + name + "!");
out.println("Your Email ID: " + email);
%>

ऊपर के code में request.getParameter() method का use user द्वारा भेजे गए data को प्राप्त करने के लिए किया गया है।

Response Object in JSP

Response Object का use server से client को response भेजने के लिए किया जाता है। इसके through हम HTML content generate कर सकते हैं, redirect कर सकते हैं या content type define कर सकते हैं।

Common Methods of response Object

Method Description
setContentType(String type) Response content type define करता है जैसे "text/html" या "application/json"।
sendRedirect(String url) User को दूसरे page पर redirect करता है।
getWriter() Client को data भेजने के लिए PrintWriter object देता है।
addCookie(Cookie c) Response में cookie add करता है।
setStatus(int sc) Response status code set करता है (जैसे 200, 404, 500)।

Example: Response Object का Use

<%
response.setContentType("text/html");
out.println("<h3>Response Example</h3>");
out.println("This content is sent to the client browser.");
%>

अगर हमें किसी दूसरे page पर redirect करना हो —

<%
response.sendRedirect("home.jsp");
%>

Dynamic Processing in JSP

Dynamic Processing का मतलब है — data को process करके run-time पर dynamic output generate करना। JSP का main advantage यही है कि ये static HTML को dynamic data से merge कर देता है।

उदाहरण के लिए, अगर कोई student अपने marks enter करता है और server उसे calculate करके result दिखाता है — यही dynamic processing है।

Example: Dynamic Content Generate करना

<%
String name = request.getParameter("student");
int marks = Integer.parseInt(request.getParameter("marks"));
if(marks >= 33){
out.println("<h3>" + name + ", You Passed!</h3>");
}else{
out.println("<h3>" + name + ", You Failed!</h3>");
}
%>

ऊपर का example दिखाता है कि कैसे JSP page request data लेकर server side logic apply करता है और फिर response में dynamic HTML generate करता है।

JSP Request Lifecycle

JSP page के अंदर हर request एक specific lifecycle से गुजरती है। जब user browser से request भेजता है, तो ये steps follow होते हैं —

  • Client request browser से JSP page पर जाती है।
  • JSP को Servlet में convert किया जाता है।
  • Servlet compile होकर run होता है।
  • Request data process किया जाता है।
  • Response client को वापस भेजा जाता है।

Flow Representation

Flow कुछ इस तरह से होता है —

Client → JSP Page → Servlet Engine → Java Code Execution → Response → Browser

Response Headers और Encoding

Response headers का use browser को extra information देने के लिए किया जाता है जैसे content type, cache control, character encoding आदि।

<%
response.setHeader("Cache-Control", "no-cache");
response.setCharacterEncoding("UTF-8");
%>

Example: JSON Response भेजना

<%
response.setContentType("application/json");
out.println("{\"status\":\"success\",\"message\":\"Data received\"}");
%>

Request और Response के साथ Cookies और Session

Cookies और Session data storage और user tracking के लिए use किए जाते हैं। ये request और response दोनों objects के साथ काम करते हैं।

Example: Cookie Set और Retrieve करना

<%
// Cookie set करना Cookie c = new Cookie("username", "Amit");
response.addCookie(c);
// Cookie read करना Cookie cookies[] = request.getCookies();
for(Cookie ck : cookies){
out.println(ck.getName() + " : " + ck.getValue() + "<br>");
}
%>

Request Forwarding और Including

कई बार हमें request को दूसरे JSP या Servlet file पर forward करना होता है ताकि processing centralized रहे। इसके लिए RequestDispatcher का use किया जाता है।

Example: RequestDispatcher Forward

<%
RequestDispatcher rd = request.getRequestDispatcher("next.jsp");
rd.forward(request, response);
%>

Example: Including another JSP

<%
RequestDispatcher rd = request.getRequestDispatcher("header.jsp");
rd.include(request, response);
%>

Error Handling with Request और Response

अगर request या response process करते समय कोई error होती है, तो JSP में हम error page define कर सकते हैं —

<%@ page errorPage="error.jsp" %>

और error.jsp में —

<%@ page isErrorPage="true" %>
<h3>Error: <%= exception.getMessage() %></h3>

Request और Response Object के Advantages

  • Dynamic data processing आसान बनाता है।
  • Client से आने वाले data को efficiently handle करता है।
  • Different pages के बीच data transfer संभव बनाता है।
  • Response को customize करने की flexibility देता है।
  • Cookies और Session के साथ integration आसान बनाता है।

Exam Notes (Quick Revision)

  • Request Object: Client data receive करता है — method: getParameter(), getHeader()
  • Response Object: Server से data भेजने के लिए — method: setContentType(), sendRedirect()
  • Dynamic Processing: Run-time पर logic apply करके result generate करना।
  • Lifecycle: Request → Processing → Response
  • Dispatcher: Forward या include करने के लिए use होता है।
  • Cookie: Small data store करने के लिए, Response में add होती है।
  • Error Page: Exception handle करने के लिए use होता है।