Feedback Form

doGet(), doPost(): HTTP Method Handling and Response Generation

doGet() और doPost(): HTTP Method Handling and Response Generation

जब हम Servlets की बात करते हैं, तो दो सबसे important methods सामने आते हैं — doGet() और doPost()। ये दोनों methods web development में core role निभाते हैं क्योंकि ये HTTP request को handle करते हैं और client को response generate करके भेजते हैं। आज हम इस blog में इन्हीं दोनों methods को आसान भाषा में detail से समझेंगे ताकि college exams और practicals दोनों में आपको perfect clarity मिले।

HTTP Method Handling क्या होता है?

HTTP (HyperText Transfer Protocol) web communication का base है। जब भी कोई client (जैसे browser) server से data मांगता है या भेजता है, तो वो HTTP methods के through करता है। सबसे common दो methods हैं — GET और POST

Java Servlets में इन requests को handle करने के लिए दो predefined methods use किए जाते हैं — doGet() (for GET requests) और doPost() (for POST requests)। दोनों methods का काम एक ही goal को achieve करना है — client की request को process करना और suitable response generate करना।

doGet() Method क्या है?

जब client browser के address bar में URL टाइप करता है या किसी link पर click करता है, तो HTTP GET request generate होती है। Servlet इस request को handle करने के लिए doGet() method call करता है।

Syntax of doGet()

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Code to handle GET request }

यह method दो parameters लेता है:

  • HttpServletRequest request: Client की request data को contain करता है।
  • HttpServletResponse response: Server द्वारा client को भेजे जाने वाले response को represent करता है।

doGet() का Use कब होता है?

  • जब client को server से data retrieve करना होता है।
  • जब URL में parameters भेजने हों (जैसे search query)।
  • जब request idempotent हो (यानि बार-बार करने पर result same रहे)।

Example of doGet()

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class GetExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String name = request.getParameter("username"); out.println("<h2>Hello, " + name + "! Welcome to doGet Example.</h2>"); } }

ऊपर के example में, जब user URL के साथ “?username=Ravi” भेजेगा, तो servlet उसे read करके response में “Hello, Ravi!” दिखाएगा। यानी doGet() में data URL के जरिए आता है।

doGet() की Limitations

  • URL में data दिखता है, इसलिए sensitive data भेजना unsafe है।
  • URL की length limit होती है (लगभग 2048 characters)।
  • GET method caching issue create कर सकता है।

doPost() Method क्या है?

अब बात करते हैं doPost() की। यह method तब use होता है जब client को server पर data securely भेजना होता है — जैसे form submission, login details या file upload।

Syntax of doPost()

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Code to handle POST request }

यह भी HttpServletRequest और HttpServletResponse objects को parameter के रूप में लेता है, लेकिन इसमें data request body के अंदर भेजा जाता है, न कि URL में।

doPost() कब Use करें?

  • जब sensitive information भेजनी हो (जैसे password)।
  • जब large amount of data भेजना हो।
  • जब database update या server-side change करना हो।

Example of doPost()

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class PostExample extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String user = request.getParameter("user"); String pass = request.getParameter("password"); out.println("<h2>Login Successful for User: " + user + "</h2>"); } }

यह example बताता है कि जब user किसी form से data भेजता है (POST method से), तो servlet उसे process करके proper response generate करता है। यहाँ password URL में नहीं दिखेगा — जो इसे सुरक्षित बनाता है।

doPost() की Advantages

  • Data body के अंदर जाता है, इसलिए secure रहता है।
  • Large data भेज सकते हैं।
  • Form submission या data modification के लिए perfect है।

doGet() vs doPost()

आइए अब एक simple comparison table से समझते हैं कि doGet() और doPost() में actual difference क्या है।

Feature doGet() doPost()
Data Transmission URL के माध्यम से Request body के माध्यम से
Security कम (data visible) अधिक (data hidden)
Data Size Limit Limited Unlimited
Usage Data retrieval के लिए Data submission/update के लिए
Bookmarkable Yes No
Caching हो सकता है नहीं होता

Response Generation in Servlets

अब समझते हैं कि Servlets response कैसे generate करते हैं। जब भी client request भेजता है, servlet उसे process करके response generate करता है। यह response HTML, JSON, XML, plain text या file के रूप में हो सकता है।

Steps of Response Generation

  • Client request send करता है (GET या POST)।
  • Container servlet को call करता है।
  • Servlet request process करता है।
  • Servlet response object में output लिखता है।
  • Response वापस client को भेज दिया जाता है।

Example: Response Generation in doGet()

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("<h1>Servlet Response Example</h1>"); out.println("<p>This response is generated using doGet() method.</p>"); out.println("</body></html>"); }

यहाँ servlet ने dynamic HTML content generate किया है। यह dynamic response server-side processing का result है।

Content Type Setting

Response send करने से पहले हमें यह बताना पड़ता है कि किस type का data भेजा जा रहा है। इसके लिए हम response.setContentType() use करते हैं।

  • text/html → HTML content
  • application/json → JSON data
  • text/plain → Plain text

Output Stream Methods

  • PrintWriter: Text-based response के लिए।
  • ServletOutputStream: Binary data (जैसे images, PDF) भेजने के लिए।

Request Chaining और Forwarding

कई बार servlet को request किसी दूसरे servlet या JSP page को भेजनी होती है। इसके लिए हम RequestDispatcher का use करते हैं।

RequestDispatcher rd = request.getRequestDispatcher("nextServlet"); rd.forward(request, response);

यह method request को दूसरे servlet तक forward करता है। अगर हमें current output के बाद extra content जोड़ना हो, तो हम include() method use कर सकते हैं।

Real-world Usage Example

मान लो आपके पास एक Login form है जिसमें user ID और password enter करता है। जब user “Login” button दबाता है:

  • Form data POST method से servlet को जाता है।
  • Servlet doPost() method call करता है।
  • Servlet database में user credentials verify करता है।
  • Result के अनुसार response generate करता है — success या error message।

Key Points to Remember

  • doGet() = Data retrieve करने के लिए।
  • doPost() = Data submit/update करने के लिए।
  • doGet() में data URL में दिखता है, doPost() में hidden रहता है।
  • Response हमेशा HttpServletResponse object के through generate होता है।
  • Content type सही set करना बहुत जरूरी है।

Exam Oriented Notes

  • doGet() और doPost() दोनों methods Servlet class में override किए जाते हैं।
  • doGet() = URL based request handling।
  • doPost() = Form data handling।
  • response.setContentType() – Response format define करने के लिए।
  • PrintWriter out – Response body में text लिखने के लिए।
  • GET method का data bookmark किया जा सकता है, POST का नहीं।
  • GET method faster होता है, POST method secure होता है।
  • Real-time applications (Login, Signup) में हमेशा doPost() prefer किया जाता है।