Existen buenos manuales aqui
http://java.programacion.com
Con respecto a la diferencia entre los Servlets y los JSP, es que los Servlets son clases hechas en Java, como culaquier otro programa hecho en JAva, y que debes compilar como cualquier otro, y poner tu .class en el servidor.
Los JSP nacieron en respuesta a failitar la construccion de Servlets y de poder hacer un mejor uso del modelo de 3 capas. Cuando usas JSP el codigo Java se mezcla con el codigo HTML tal como se usa con PHP, ASP o CFML.
Pero finalmente los JSP tu servidor se preocupa de combertirlos en programas Java, es decir, los combierte en Servlets y luego los compila.
Basicamente se pude decir que los Servlets y los JSP finalmente son lo mismo, la diferencia esta en como los programas.
Saludos