Realmente comece estudando Servlet e depois parta para JSP.
Podem falar que JSP é mais fácil, mas usar apenas JSP em um sistema é muito feio, fica dificil de dar manutenção e impossível de fazer testes unitários. O Legal é usar MVC (Model View Controller), ou seja, separar seu sistema em 3 camadas, mais informações o fórum do GUJ vai te informar de montão.
Agora comece estudando Servlet, depois JSP, ae você vai querer uma alternativa para o JSP, eu indico o Velocity, depois você vai querer uma framework MVC, depois uma camada de persistência, etc etc etc etc, resumindo… isso é viciante
Atualmente estou lendo o livro: Java para a Web com Servlets, JSP e EJB “Um guia do programador para soluções escalonáveis em J2EE” Autor: Budi Kurniawan Editora: Ciência Moderna
Estou gostando bastante deste livro, bastante conteúdo prático, bem explicado, vai direto ao ponto.
Recomendo e assino em baixo!
Velocity é uma ferramenta de templates. Invés de você utilizar o JSP, você pode usar o Velocity para gerar os conteúdos dinâmicos de uma forma rápida e de fácil manutenção.
Única coisa que eu aconselho, é conhecer um pouco de servlet, antes de utilizar o Velocity, pois as informações do Velocity serão geradas através de servlet.
Como ja disseram, velocity eh uma ferramenta de templates. Voce pode usar ele para qualquer coisa onde o resultado seja um monte de texto ( e isso inclui txt, xml, html, rtf etc etc ).
Ao usar em aplicacoes web, basta voce usar o metodo getWriter() do response ( HttpServletResponse ) para mostrar o conteudo.
No site do velocity ha bons exemplos em como fazer isso.