Introduction to Servlets: The Foundation of Java Web Development
Introduction to Servlets: The Foundation of Java Web Development
Servlet क्या है?
Servlet एक Java प्रोग्राम है जो web server पर run होता है और dynamic web content generate करता है। जब भी user web browser से कोई request भेजता है, Servlet उस request को process करता है और फिर response भेजता है — जैसे HTML page या data। इसे हम web application का “backend brain” भी कह सकते हैं।
साधारण शब्दों में, Servlet एक ऐसा Java component है जो server-side पर काम करता है और client (browser) से आने वाली HTTP request को handle करता है। Servlet का मुख्य काम है — request लेना, process करना, और response देना।
Example:
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<h2>Hello Servlet!</h2>");
}
}
Servlets की जरूरत क्यों पड़ी?
Web development के शुरुआती दौर में developers CGI (Common Gateway Interface) का use करते थे। लेकिन CGI का biggest drawback था – हर request के लिए नया process create करना। इससे server पर load बढ़ जाता था और performance slow हो जाती थी।
Servlet ने इस problem को solve किया। Servlet multi-threaded model पर काम करता है, जहाँ हर request के लिए नया thread बनता है, न कि नया process। इससे speed बढ़ती है, memory usage कम होती है, और scalability improve होती है।
Servlet Architecture
Servlet का architecture simple और efficient है। इसमें client, web server और servlet तीनों के बीच interaction होता है। नीचे इसका पूरा flow बताया गया है।
Servlet Working Flow:
- Client browser request भेजता है (HTTP Request)।
- Web Server उस request को Servlet Container को forward करता है।
- Servlet Container Servlet को load करता है (अगर पहले से loaded नहीं है)।
- Servlet request को process करता है और output generate करता है।
- Generated response वापस client browser को भेजा जाता है।
Servlet Architecture Diagram (Conceptual):
Client → Web Server → Servlet Container → Servlet → Response → Client
Servlet Life Cycle
हर Servlet का एक fixed life cycle होता है जिसे Servlet Container control करता है। Servlet API इसके लिए कुछ predefined methods provide करता है।
Servlet Life Cycle Methods:
| Method | Purpose |
|---|---|
init() |
Servlet load होते समय एक बार call होता है — initialization के लिए। |
service() |
हर request के लिए call होता है — main logic इसी method में लिखा जाता है। |
destroy() |
Servlet unload होने से पहले call होता है — cleanup के लिए। |
Servlet Life Cycle Example:
public class MyServlet extends HttpServlet {
public void init() {
System.out.println("Servlet initialized...");
}
public void service(HttpServletRequest req, HttpServletResponse res)
throws IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<h3>Processing Request</h3>");
}
public void destroy() {
System.out.println("Servlet destroyed...");
}
}
Types of Servlets
Servlets दो मुख्य प्रकार के होते हैं — GenericServlet और HttpServlet।
1. GenericServlet
यह एक protocol-independent class है, यानी किसी भी communication protocol (HTTP, FTP आदि) के साथ use की जा सकती है।
public class MyGenericServlet extends GenericServlet {
public void service(ServletRequest req, ServletResponse res)
throws IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<h3>Generic Servlet Example</h3>");
}
}
2. HttpServlet
यह specifically HTTP protocol के लिए design किया गया है। यह web applications में सबसे ज़्यादा use होता है। HttpServlet में doGet() और doPost() methods होते हैं, जिनसे GET और POST requests handle होती हैं।
public class MyHttpServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<h3>This is HttpServlet</h3>");
}
}
Servlet API Components
Servlet API दो main packages में divide है — javax.servlet और javax.servlet.http।
मुख्य Interfaces:
- Servlet: Base interface जिसे सभी Servlets implement करते हैं।
- ServletRequest: Client request की information store करता है।
- ServletResponse: Servlet response भेजने में मदद करता है।
- ServletConfig: Servlet configuration parameters access करने के लिए।
- ServletContext: पूरे web application की global information provide करता है।
मुख्य Classes:
- GenericServlet: Protocol-independent base class।
- HttpServlet: HTTP specific subclass।
Servlets के फायदे
- Efficient: Servlet एक बार load होता है और multiple requests को threads के जरिए handle करता है।
- Portable: Java-based होने के कारण किसी भी platform पर चल सकता है।
- Secure: Java की security model पर आधारित है।
- Robust: Exception handling और garbage collection जैसी features इसे stable बनाती हैं।
- Integration Friendly: JSP, JDBC, और frameworks जैसे Spring और Struts के साथ easily integrate होता है।
Difference between CGI and Servlet
| Feature | CGI | Servlet |
|---|---|---|
| Execution Model | हर request के लिए नया process बनता है | हर request के लिए नया thread बनता है |
| Performance | Slow due to process creation | Fast due to multithreading |
| Platform Independence | Limited | 100% platform independent |
| Memory Usage | High | Low |
Servlet Configuration
Servlet configuration web.xml file या @WebServlet annotation के माध्यम से की जाती है।
web.xml Configuration Example:
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
Annotation Configuration Example:
@WebServlet("/welcome")
public class WelcomeServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<h2>Welcome via Annotation</h2>");
}
}
Communication with Other Components
Servlets आपस में और JSP या database के साथ communicate कर सकते हैं। ये RequestDispatcher interface के माध्यम से किया जाता है।
Forward और Include Methods:
forward()– Request को किसी दूसरे resource को भेजता है।include()– दूसरे resource की output को include करता है।
RequestDispatcher rd = req.getRequestDispatcher("next.jsp");
rd.forward(req, res);
Servlets के Real-world Use Cases
- Login और Registration Forms handle करना।
- Dynamic Content Generation जैसे dashboard data।
- Database से data fetch और update करना।
- Web API बनाना या RESTful services serve करना।
- JSP pages और MVC frameworks के साथ integrate करना।
Exam-Oriented Notes
- Servlet एक Java class होती है जो server पर run होती है।
- Servlets dynamic web pages create करने के लिए use होते हैं।
- Life cycle methods:
init(),service(),destroy()। - Servlets multi-threaded और efficient होते हैं।
- Servlet API packages:
javax.servletऔरjavax.servlet.http। - Major difference: CGI हर बार नया process बनाता है, Servlet thread बनाता है।
- Servlets को configure करने के लिए web.xml या annotation का use किया जाता है।
- RequestDispatcher का use forward और include के लिए होता है।
- Servlets JSP और JDBC के साथ integrate होते हैं।