Cada cosa tiene su uso, y seguir reglas a ciegas basadas en principios dogmáticos suele darse de bruces con la realidad de vez en cuando.
Las JSP fueron creadas para cubrir un espacio de casos de uso, y si algo que tienes que hacer no entrar ahí, es estupido intentar usarlas. Nadie en su sano juicio utiliza un martillo para clavar un tornillo, por muy bueno que sea el martillo clavalando clavos y por muchos otros clavos que tengamos.
Lo que hay que hacer es aprender para que va mejor cada cosa y usar cada una cuando sea adecuada. Por ejemplo, las JSP están dirigidas a crear contenido tipo "texto", así que si tenemos que generar un binario, como una imagen que sale de una BDD, un PDF de un informe generado etc., usar un servlet suele dar bastantes menos problemas por que no tienes que preocuparte de espacios en blanco etc. aunque mucha gente usa las JSP también para eso para que el contenedor compile por ellos
.
Por otro lado, todos los famosos frameworks web MVC usan filtros o servlets para la parte del "dispatcher", no JSPs... ¿están todos equivocados?
Los dogmatismos quedan bien en los libros, la realidad suele ser menos radical.
S!