Here are some of uses of HttpServlet over GenericServlet:
GenericServlet is for
servlets that might not use HTTP, like for instance FTP servlets. Of course, it turns out that there's no such thing as FTP servlets, but they were trying to plan for future growth when they designed the spec.
In short GenericServlet is protocol independent, whereas HttpServlet is protocol dependent
In GenericServlets you cannot use Cookies or HttpSession.
Session tracking is not possible, redirection is not possible.
Http servlets overrides doGet and doPost methods. Generic servlet overides service method.