Head First Servlets and Jsp by Bryan Basham & Kathy Sierra