Servlets have changed very little since they first came out.
JSP, on the other hand, has undergone some drastic changes.
As a result it now has one of the major drawbacks that makes Perl code difficult to maintain; there are several syntaxes for doing the exact same thing.
The best rule of thumb is "Don't mix them".
If you're starting out a new project, learn the best practices for JSP 2.0.
Use MVC to factor everything but the presentation markup out of your JSPs into servlets and beans or plain old
Java ojbects (POJOs) and then use JSTL and EL to perform any branching and looping needed to work with the result objects in your pages.