To be honest, it totally depends on your application. What you've described here are the "model 1" and "model 2" architectures.
Unless your application is very small (for example just a handful of JSPs), I would recommend adopting the 2nd approach, where servlets are used as the controller. You are right in saying that this does add an additional layer into your application, but in the end, it will be much more maintainable because of this structure.
If you're looking for more information about this, check out chapter 12 "Designing Web Applications and Servlet Patterns" from
Professional Java Servlets 2.3, which is available to download from
my website.
On an implementation level, there are many ways in which this can be tackled - from simple frameworks to fully fledged open source projects such as
Struts. The project that I'm just finishing up uses an extremely simple framework consisting of around 4 classes. It all depends on the complexity of your project...
Hope that helps.
Simon