Feedback Form

GenericServlet vs HttpServlet: Abstract Base Classes Explained

GenericServlet vs HttpServlet: Abstract Base Classes Explained

GenericServlet vs HttpServlet: Overview

जब हम Java Servlet Programming की बात करते हैं, तो दो बहुत important abstract classes सामने आती हैं — GenericServlet और HttpServlet। दोनों ही classes servlet API का core हिस्सा हैं और web application development में बहुत use होती हैं। लेकिन इन दोनों के purpose, implementation और use-cases अलग होते हैं। इस blog में हम step-by-step समझेंगे कि GenericServlet और HttpServlet क्या हैं, कैसे काम करते हैं और इनमें difference क्या है।

What is GenericServlet?

GenericServlet एक abstract class है जो javax.servlet package में होती है। इसका main काम है servlet को platform-independent बनाना। यह class protocol-independent होती है, यानी यह किसी specific protocol (जैसे HTTP) पर depend नहीं करती। इसे आप किसी भी type के request-response protocol के लिए use कर सकते हैं — चाहे वो HTTP हो, FTP हो या कोई और।

Key Points about GenericServlet

  • यह javax.servlet.Servlet interface को implement करती है।
  • यह एक abstract class है, इसलिए इसे directly instantiate नहीं किया जा सकता।
  • इसमें servlet के basic lifecycle methods — init(), service(), और destroy() defined होते हैं।
  • यह protocol-independent होती है।

Methods of GenericServlet

GenericServlet class में कुछ important methods होते हैं:

Method Name Description
init(ServletConfig config) Servlet को initialize करने के लिए use किया जाता है।
service(ServletRequest req, ServletResponse res) Client से आए request को process करता है और response generate करता है।
destroy() Servlet के destroy होने से पहले cleanup activities के लिए use होता है।
getServletConfig() Servlet configuration object return करता है।
getServletInfo() Servlet की information return करता है।

Example of GenericServlet

चलिए एक simple example देखते हैं:

import java.io.*;
import javax.servlet.*;

public class MyGenericServlet extends GenericServlet {
  public void service(ServletRequest req, ServletResponse res) throws IOException, ServletException {
    res.setContentType("text/html");
    PrintWriter out = res.getWriter();
    out.println("<h3>Welcome to GenericServlet Example</h3>");
  }
}

यहाँ हमने केवल service() method को override किया है क्योंकि बाकी lifecycle methods पहले से ही GenericServlet में defined हैं।

What is HttpServlet?

अब बात करते हैं HttpServlet की। यह भी एक abstract class है जो javax.servlet.http package में होती है। लेकिन यह specifically HTTP protocol के लिए बनाई गई है। यह GenericServlet को extend करती है और HTTP-based communication को simplify करती है।

Key Points about HttpServlet

  • यह GenericServlet को extend करती है।
  • यह सिर्फ HTTP requests को handle करने के लिए use होती है।
  • यह GET, POST, PUT, DELETE जैसे HTTP methods को handle करने के लिए pre-defined methods देती है।
  • इसमें service() method already override किया गया होता है ताकि HTTP request के type के अनुसार specific method call हो।

Important Methods of HttpServlet

Method Purpose
doGet(HttpServletRequest req, HttpServletResponse res) GET request को handle करता है।
doPost(HttpServletRequest req, HttpServletResponse res) POST request को handle करता है।
doPut() PUT request को handle करता है।
doDelete() DELETE request को handle करता है।

Example of HttpServlet

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class MyHttpServlet extends HttpServlet {
  protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
    res.setContentType("text/html");
    PrintWriter out = res.getWriter();
    out.println("<h3>Welcome to HttpServlet Example</h3>");
  }
}

Difference Between GenericServlet and HttpServlet

अब सबसे important part — इन दोनों classes के बीच difference क्या है। नीचे table में point-wise comparison दिया गया है।

Basis GenericServlet HttpServlet
Package javax.servlet javax.servlet.http
Protocol Dependency Protocol-independent (HTTP, FTP, etc.) Protocol-dependent (only HTTP)
Inheritance Implements Servlet interface Extends GenericServlet
Methods Has only one service() method Has multiple methods like doGet(), doPost(), etc.
Use Case Used for generic request-response handling Used for HTTP-specific web applications
Ease of Use Developer को खुद protocol handling करना पड़ता है Pre-defined HTTP method support के कारण easy होता है
Preferred For Protocol-independent applications Web-based (HTTP) applications

GenericServlet vs HttpServlet (Key Takeaways)

  • GenericServlet एक general-purpose abstract class है जो किसी भी protocol के लिए काम कर सकती है।
  • HttpServlet specially HTTP communication के लिए design की गई है।
  • अगर आप web application बना रहे हैं जो browser और server के बीच HTTP communication पर based है, तो HttpServlet best choice है।
  • लेकिन अगर protocol flexibility चाहिए, तो GenericServlet use करना बेहतर है।

Servlet Hierarchy (Class Structure)

Servlet API की class hierarchy इस तरह से होती है:

Servlet (interface)
  ↑
GenericServlet (abstract class)
  ↑
HttpServlet (abstract class)
  ↑
Your Custom Servlet Class

When to Use Which?

अगर आपका goal एक simple web application बनाना है जो HTTP requests को handle करे, तो HttpServlet perfect है। लेकिन अगर आपको किसी non-HTTP protocol के साथ काम करना है या low-level control चाहिए, तो GenericServlet choose करना सही रहेगा।

Examples of Use Cases

  • GenericServlet – File Transfer Server, Messaging Systems
  • HttpServlet – Online Form Handling, Login Pages, E-commerce Sites

Advantages of Using HttpServlet

  • Pre-defined methods से development आसान हो जाता है।
  • Request और response objects specifically HTTP के लिए optimized होते हैं।
  • Maintenance आसान होता है क्योंकि हर HTTP method के लिए अलग function define किया जा सकता है।

Advantages of Using GenericServlet

  • यह किसी भी protocol के साथ compatible होती है।
  • Customization और flexibility ज्यादा मिलती है।
  • Lightweight applications के लिए suitable है।

Summary Table

Feature GenericServlet HttpServlet
Protocol Independent HTTP only
Methods service() doGet(), doPost(), doPut() etc.
Ease of Implementation Moderate Very Easy
Extends Implements Servlet Interface Extends GenericServlet
Best For Protocol-neutral apps HTTP-based apps

Final Notes for Students

Exam के लिए अगर short answer लिखना है तो याद रखो — GenericServlet protocol-independent होती है जबकि HttpServlet HTTP protocol पर depend करती है। GenericServlet में केवल service() method होता है, जबकि HttpServlet में GET, POST, PUT, DELETE जैसे methods होते हैं। Practical exam में अगर simple HTML form submit करना है तो हमेशा HttpServlet use करो।