I think adeel is perfectly correct. init() method can be well understood by following example :
If we want to make a database connection for getting data. We would ideally want it to happen only once when first time the servlet is loaded and not that everytime we call the servlet the database connection happens. If we do the same in constructor, the connection will be made each time the servlet is instantiated.
Now i think you can reason with yourself that why not constructor and why to user init().