Firstly,
you should do stuff in the Servlet init() method, not the Servlet constructor. That gives you access to the ServletContext.
Secondly, doing work there is fine if only one servlet is going to need it. But in many applications you're going to have things - like database details - that are needed by several servlets. But you only want to do it once. Using a ContextListener allows you to perform actions after the context is ready, but before any servlets are created.