Feedback Form

Introduction to HttpServletRequest: Headers, Parameters, and Attributes

Introduction to HttpServletRequest: Headers, Parameters, and Attributes

HttpServletRequest क्या होता है?

जब कोई client (जैसे browser) server को request भेजता है, तो Java Servlet इस request को handle करने के लिए HttpServletRequest object का use करता है। यह object request से जुड़ी सारी जानकारी रखता है — जैसे client ने क्या data भेजा है, कौन-सा header है, कौन-से parameters हैं, और server को क्या process करना है।

Simple words में कहें तो HttpServletRequest एक ऐसा interface है जो client की ओर से आने वाली request को represent करता है। यह javax.servlet.http package में available होता है।

HttpServletRequest का मुख्य काम

जब कोई user किसी web form को submit करता है या URL के साथ query string भेजता है, तो यह data server तक पहुँचता है। Servlet इस data को access करने के लिए HttpServletRequest object का use करता है। इसके जरिए हम request headers, parameters और attributes जैसी चीज़ें प्राप्त कर सकते हैं।

मुख्य Responsibilities:

  • Client से data प्राप्त करना (जैसे form data या query string)।
  • HTTP headers पढ़ना (जैसे browser, cookies, content-type)।
  • Session और attributes manage करना।
  • Request के method (GET या POST) की पहचान करना।
  • Client के IP address और URL को detect करना।

1. HttpServletRequest Headers

Headers वे meta-information होते हैं जो request के साथ भेजे जाते हैं। Headers में browser type, content type, language preference, cookies, और authorization जैसी जानकारी होती है।

Headers Access करने के Methods:

  • getHeader(String name) — किसी particular header का value return करता है।
  • getHeaderNames() — सभी header के नामों का enumeration देता है।
  • getIntHeader(String name) — header को integer के रूप में return करता है।
  • getDateHeader(String name) — header को date के रूप में return करता है।

Example:

Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
  String name = (String) headerNames.nextElement();
  String value = request.getHeader(name);
  out.println(name + ": " + value + "<br>");
}

ऊपर के code से हम client द्वारा भेजे गए सारे headers को display कर सकते हैं। Exam point of view से ये बहुत important concept है क्योंकि यह बताता है कि server कैसे client की information को process करता है।

कुछ Common Request Headers:

Header NameDescription
User-AgentClient का browser और OS बताता है।
AcceptClient कौन-कौन से content types accept करता है।
HostServer का host name बताता है।
RefererPrevious page का URL बताता है।
CookieClient के cookies की जानकारी भेजता है।

2. HttpServletRequest Parameters

Parameters वो data होते हैं जो user form या URL के माध्यम से server को भेजता है। जैसे जब कोई user login form submit करता है, तो username और password request parameters के रूप में भेजे जाते हैं।

Parameters Access करने के Methods:

  • getParameter(String name) — किसी particular parameter का value देता है।
  • getParameterValues(String name) — अगर एक ही name के multiple values हैं (जैसे checkbox), तो array के रूप में देता है।
  • getParameterNames() — सभी parameter names को return करता है।
  • getParameterMap() — सभी parameters और उनके values का map return करता है।

Example:

String username = request.getParameter("username");
String password = request.getParameter("password");
out.println("Welcome, " + username);

यह code simple login form से data receive करके username को print करता है। Exam में अक्सर पूछा जाता है कि parameters कैसे retrieve किए जाते हैं, इसलिए इसे अच्छे से समझना ज़रूरी है।

GET vs POST Parameters

MethodData TransmissionVisibilityUse Case
GETURL में data दिखाई देता है (query string के रूप में)VisibleNon-sensitive data (search queries)
POSTData request body में जाता हैHiddenSensitive data (password, forms)

3. HttpServletRequest Attributes

Attributes request object के अंदर temporarily data store करने के लिए use किए जाते हैं। ये data केवल उसी request तक valid रहते हैं और forwarding या include के दौरान share किए जा सकते हैं।

Attributes Access करने के Methods:

  • setAttribute(String name, Object value) — नया attribute add करता है।
  • getAttribute(String name) — attribute का value return करता है।
  • removeAttribute(String name) — किसी attribute को हटाता है।
  • getAttributeNames() — सभी attributes की list return करता है।

Example:

request.setAttribute("user", "Rahul");
RequestDispatcher rd = request.getRequestDispatcher("profile.jsp");
rd.forward(request, response);

यहाँ "user" नाम का attribute set किया गया है, जिसे अगला JSP page access कर सकता है। Attributes data sharing के लिए बहुत useful होते हैं, खासकर जब multiple servlets या JSPs में information पास करनी हो।

Attributes vs Parameters vs Headers Comparison

FeatureHeadersParametersAttributes
SourceClient द्वारा भेजे जाते हैंClient form या URL से भेजे जाते हैंServer द्वारा set किए जाते हैं
Data TypeStringStringObject
ScopeRequest तक सीमितRequest तक सीमितRequest तक सीमित
Use CaseMetadata (जैसे browser info)User input dataData sharing between components

4. HttpServletRequest के अन्य Important Methods

नीचे कुछ frequently asked methods दिए गए हैं जो exam preparation के लिए बहुत useful हैं:

  • getMethod() — यह बताता है कि request GET है या POST।
  • getRequestURI() — requested resource का path return करता है।
  • getContextPath() — web application का context path देता है।
  • getRemoteAddr() — client का IP address return करता है।
  • getServerName() — server का नाम बताता है।
  • getServerPort() — server port number return करता है।
  • getProtocol() — HTTP version बताता है (जैसे HTTP/1.1)।

Example Usage:

out.println("Method: " + request.getMethod());
out.println("Client IP: " + request.getRemoteAddr());
out.println("Server Name: " + request.getServerName());

5. Practical Example

नीचे एक simple servlet example दिया गया है जो headers, parameters और attributes तीनों को handle करता है।

@WebServlet("/UserInfo")
public class UserInfoServlet extends HttpServlet {
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    String name = request.getParameter("name");
    String browser = request.getHeader("User-Agent");
    request.setAttribute("msg", "Welcome " + name);

    out.println("<h2>User Info</h2>");
    out.println("Name: " + name + "<br>");
    out.println("Browser: " + browser + "<br>");
    out.println("Message: " + request.getAttribute("msg"));
  }
}

इस servlet में तीनों concepts — parameters, headers और attributes — को practically use किया गया है। Exam में अगर आपको short program लिखने को कहा जाए तो यह structure बहुत helpful रहेगा।

6. Key Points to Remember

  • HttpServletRequest client request को represent करता है।
  • Headers meta-information प्रदान करते हैं।
  • Parameters user input data को represent करते हैं।
  • Attributes temporary server-side data के लिए होते हैं।
  • सारे methods javax.servlet.http.HttpServletRequest interface में defined हैं।
  • GET और POST के बीच अंतर समझना बहुत ज़रूरी है।

7. Exam Point of View से Important Tips

  • Definitions और differences याद रखें — Headers vs Parameters vs Attributes।
  • Methods के exact names और return types ध्यान में रखें।
  • Short program लिखना practice करें जिसमें तीनों का use हो।
  • Conceptual questions जैसे — “Why we use attributes instead of parameters?” prepare करें।

अगर आप इन topics को अच्छे से समझ लेते हैं तो Servlet exam में “Request Handling” से जुड़ा कोई भी question आसानी से solve कर सकते हैं।