GenericServlet is for servlets that might not use HTTP, like for instance FTP service.As of only Http is implemented completely in HttpServlet. The GenericServlet has a service() method that gets called when a client request is made. This means that it gets called by both incoming requests and the HTTP requests are given to the servlet as they are.
Generic Servlet:- A GenericServlet has a service() method to
handle requests. It is protocol independent.
Http Servlet:- The HttpServlet extends GenericServlet and adds support for HTTP protocol based methods like doGet(), doPost(), doHead() etc. It is protocol dependent.
Posted by: modi
GenericServlet is not specific any protocol .The GenericServlet has a service()method that gets called when a client request is made.
But HttpServlet is specific to Http protocol
Posted by: Anirudh Narayan
Contact Anirudh Narayan
When one writes a Servlet code, he must implement this interface directly or indirectly. Here, one always implements the interface indirectly by extending either the javas.servlet.GenericServlet or javax.servlet.http.HttpServlet classes.
The GenericServlet class implements the Servlet interface and, for convenience, the ServletConfig interface. Servlet developers typically subclass GenericServlet, or its descendent HttpServlet, unless the Servlet needs another class as a parent. (If a Servlet does need to subclass another class, the Servlet must implement the Servlet interface directly. This would be necessary when, for example, RMI or CORBA objects act as Servlets.)
The GenericServlet class was created to make writing Servlets easier. It provides simple versions of the life-cycle methods init() and destroy( ), and of the methods in the ServletConfig interface. It also provides a log method, from the ServletContext interface. The Servlet writer must override only the service method, which is abstract. Though not required, the Servlet implementer should also override the getServletInfo() method, and will want to specialize the init and destroy methods if expensive Servlet-wide resources are to be managed.
The HttpServlet class extends GenericServlet, and provides an HTTP specific implementation of the Servlet interface. This class containing the following methods:
i. The service( ) method:
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
This method Receives standard HTTP requests from the public service method and dispatches them to the doXXX methods defined in this class. This method is an HTTP-specific version of the Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) method. There's no need to override this method.
ii. The doXXX( ) Methods:
a. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
b. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
c. protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
d. protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
e. protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
f. protected void doTrace(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
The signature of the each of these doXXX() methods is the same as the protected service() method.
The HttpServlet class provides proper implementations for the TRACE and OPTIONS methods, and there is no need to override doTrace() and doOptions().
For the other five methods, the HttpServlet class provides implementations that return HTTP errors. For the case of HTTP 1.0 complaint containers, these method return an HTTP error with status code 400, indicating that the request sent by the client is syntactically incorrect. For HTTP 1.1 complaint containers, these methods returns an HTTP error with status code 405, indicating that the requested HTTP method is not allowed for this Servlet. This class uses the getProtocol() method of the javax.servlet.ServletRequest interface to determine the protocol.
iii. The getLastModified() Method:
protected long getLastModified(HttpServletRequest req)
This method returns the time the HttpServletRequest object was last modified, in milliseconds since midnight January 1, 1970 GMT. If the time is unknown, this method returns a negative number (the default).
Servlets that support HTTP GET requests and can quickly determine their last modification time should override this method. This makes browser and proxy caches work more effectively, reducing the load on server and network resources.
Posted by: Sankhadip
GenericServlet has service() method, to handle client request.
HttpServlet extends GenericServlet.
HttpServlet has init(),service(),destroy() methods.Both are abstract.
Posted by: Selva.D
If you have the better answer, then send it to us. We will display your answer after the approval.
Rules to Post Answers in CoolInterview.com:-
- There should not be any Spelling Mistakes.
- There should not be any Gramatical Errors.
- Answers must not contain any bad words.
- Answers should not be the repeat of same answer, already approved.
- Answer should be complete in itself.