HttpServlet: doGet(), doPost(), doPut(), doDelete() Method Mapping
HttpServlet: doGet(), doPost(), doPut(), doDelete() Method Mapping
जब हम Java Servlet के साथ काम करते हैं, तो एक बहुत ही important concept है – HttpServlet Methods। Servlet Java का एक powerful component है जो web applications में client और server के बीच communication handle करता है। इस communication को manage करने के लिए HttpServlet class में चार main methods होते हैं — doGet(), doPost(), doPut(), और doDelete()। ये methods HTTP request के different types को handle करते हैं।
Introduction to HttpServlet
HttpServlet class Java Servlet API का part है, जो javax.servlet.http package में मौजूद होती है। जब कोई client (जैसे browser) server से request करता है, तो HttpServlet उस request को handle करता है और proper response देता है। यह communication हमेशा HTTP protocol पर आधारित होती है।
Servlet में हर type की HTTP request के लिए अलग method defined होता है। जैसे अगर client browser से data मांग रहा है, तो doGet() method काम करता है, और अगर client server को data भेजना चाहता है, तो doPost() काम में आता है।
HTTP Methods और उनका Mapping
HTTP protocol में कई request methods defined हैं, जैसे GET, POST, PUT, DELETE आदि। HttpServlet class इन्हीं requests को handle करने के लिए चार predefined methods provide करती है।
| HTTP Method | HttpServlet Method | Purpose (उद्देश्य) |
|---|---|---|
| GET | doGet() | Server से data retrieve करने के लिए |
| POST | doPost() | Server को data भेजने के लिए |
| PUT | doPut() | Existing resource को update करने के लिए |
| DELETE | doDelete() | Resource को delete करने के लिए |
doGet() Method
doGet() method तब call होता है जब client server से data retrieve करना चाहता है। Example के तौर पर, जब कोई user browser में URL डालकर page open करता है, तो internally browser एक GET request भेजता है।
Syntax of doGet()
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
Explanation:
- HttpServletRequest object client की request information रखता है जैसे parameter values, headers, etc।
- HttpServletResponse object response data को client तक भेजने का काम करता है।
Example of doGet()
public class MyServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h3>Hello from doGet() method</h3>");
}
}
ऊपर के example में, जब भी client browser से servlet को GET request भेजेगा, तब “Hello from doGet() method” message browser में दिखाई देगा।
doPost() Method
doPost() method तब call होता है जब client server को data भेजना चाहता है। यह method web forms या APIs के साथ commonly use किया जाता है जहाँ data submit करना होता है। POST request का main use secure data transfer और server-side processing के लिए होता है।
Syntax of doPost()
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
Example of doPost()
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String user = request.getParameter("username");
String pass = request.getParameter("password");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
if(user.equals("admin") && pass.equals("1234")){
out.println("<h3>Login Successful</h3>");
} else {
out.println("<h3>Invalid Credentials</h3>");
}
}
}
इस example में, जब user form submit करता है, तो username और password values server को भेजी जाती हैं और server उनकी checking करके response return करता है।
Difference between doGet() and doPost()
| Parameter | doGet() | doPost() |
|---|---|---|
| Data Transfer | URL के साथ query string में | Request body के अंदर |
| Security | Less secure (URL में data दिखता है) | More secure (data hidden रहता है) |
| Data Length | Limited (URL length restriction) | Unlimited |
| Use Case | Fetching data | Submitting data |
doPut() Method
doPut() method का use तब होता है जब client किसी existing resource को update या modify करना चाहता है। यह RESTful APIs में commonly use होता है। Browser level पर PUT requests normally send नहीं होतीं, लेकिन APIs में यह बहुत important होती हैं।
Syntax of doPut()
protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
Example of doPut()
public class UpdateServlet extends HttpServlet {
protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h3>Record Updated Successfully</h3>");
}
}
इस method के ज़रिए client किसी resource की existing information को modify कर सकता है, जैसे database में किसी record को update करना।
doDelete() Method
doDelete() method resource को delete करने के लिए use होता है। RESTful APIs में यह method बहुत commonly use किया जाता है जब client किसी record या data को permanently हटाना चाहता है।
Syntax of doDelete()
protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
Example of doDelete()
public class DeleteServlet extends HttpServlet {
protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h3>Record Deleted Successfully</h3>");
}
}
जब client DELETE request भेजता है, तो यह method execute होकर requested data को delete कर देता है।
Integration of Methods in Servlet Lifecycle
Servlet का lifecycle init(), service(), और destroy() methods पर आधारित होता है। जब कोई request आती है, तो service() method automatically call होता है और यह request type को identify करके related method (doGet, doPost, doPut या doDelete) को call करता है।
Servlet Request Flow:
- Browser request भेजता है।
- Servlet container उस request को receive करता है।
- Container service() method को call करता है।
- service() method HTTP method check करके proper doXXX() method call करता है।
- Response client तक वापस भेज दिया जाता है।
Important Points to Remember
- अगर Servlet में केवल doGet() defined है और client POST request भेजता है, तो “HTTP 405 Method Not Allowed” error आता है।
- doGet() method browser के back और refresh button के साथ काम करता है जबकि doPost() नहीं करता।
- Security और large data handling के लिए हमेशा doPost() prefer करें।
- API development में CRUD operations के लिए चारों methods का use होता है — Create (POST), Read (GET), Update (PUT), Delete (DELETE)।
Real-life Example (API-based CRUD Operations)
| Operation | HTTP Method | Servlet Method | Example |
|---|---|---|---|
| Create | POST | doPost() | /api/student |
| Read | GET | doGet() | /api/student?id=101 |
| Update | PUT | doPut() | /api/student?id=101 |
| Delete | DELETE | doDelete() | /api/student?id=101 |
यह example दिखाता है कि कैसे servlet methods एक complete CRUD (Create, Read, Update, Delete) structure को implement करने में help करते हैं। REST APIs में यही concept follow किया जाता है।
Method Mapping in web.xml
Servlet को web.xml file में map किया जाता है ताकि container को पता चल सके कि किस URL पर कौन-सा Servlet execute होना चाहिए।
Example Mapping:
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.example.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
जब user “/myservlet” URL hit करता है, तो container automatically MyServlet class को call करता है और फिर HTTP request type के अनुसार doGet(), doPost(), doPut() या doDelete() method को execute करता है।
Exam-Oriented Notes
- HttpServlet class javax.servlet.http package में होती है।
- doGet() method server से data लाने के लिए use होता है।
- doPost() method server को data भेजने के लिए use होता है।
- doPut() method data update करने के लिए use होता है।
- doDelete() method data delete करने के लिए use होता है।
- Servlet container service() method के through proper doXXX() method को call करता है।
- CRUD operations के लिए Servlet methods – Create(POST), Read(GET), Update(PUT), Delete(DELETE) होते हैं।
- web.xml file में servlet mapping define की जाती है।
- doPost() data hiding के कारण ज्यादा secure होता है।
- Exam में short note या differentiation question अक्सर doGet() vs doPost() पर पूछा जाता है।