-> Una característica común es que estas dos clases son clases abstractas.
-> GenericServlet es una súper clase de la clase HttpServlet.
-> La principal diferencia es que, HttpServlet es un protocolo dependiente mientras que GenericServlet es independiente del protocolo. Así que GenericServlet puede manejar todos los tipos de protocolos, pero HttpServlet solo maneja protocolos específicos de HTTP.
-> GenericServlet pertenece al paquete javax.servlet. HttpServlet pertenece al paquete javax.servlet.http
-> GenericServlet es una clase abstracta que amplía Object e implementa las interfaces Servlet, ServletConfig y java.io.Serializable. HttpServlet es una clase abstracta que amplía GenericServlet e implementa la interfaz java.io.Serializable.
-> GenericServlet admite solo el método service() no contiene los métodos doGet() y doPost(). HttpServlet admite también los métodos doGet(), doPost(), doHead() (HTTP 1.0) más los métodos doPut(), doOptions(), doDelete(), doTrace() (HTTP 1.1).
Eso ya está respondido en sus javadocs. ¿Lo leíste? [Servlet] (http://docs.oracle.com/javaee/6/api/javax/servlet/Servlet.html), [GenericServlet] (http://docs.oracle.com/javaee/6/api/javax /servlet/GenericServlet.html) y [HttpServlet] (http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServlet.html) – BalusC