This could easily tune into a discussion of framework/approach A vs. framework/approach B, so I'll address the question on a higher, somewhat more generic level.
Using servlets directly has fallen a bit out of fashion, at least for the task of accepting web requests, performing some validation, then executing associated business logic, and finally dispatching to a JSP page (or similar template mechanism). Generally a web framework would be used for that. Some of the popular ones are Struts, Shale (kind of Struts 2), JSF, Spring (which also does other stuff), with libaries like Wicket and Stripes somewhat less widely used. Velocity is a contender for JSP's role.
I'm sure I've left out someone's favorite approach, but the important point is that there are a number of ways to do this (and all these frameworks address slightly different parts of the complete picture), so it pays to look into a few of them to decide what might make sense for a given project.
Something similar is true for database access. Raw JDBC is becoming unfashionable for many tasks, and various object-relational mapping tools have stepped up to plate. Hibernate is the most popular, and worth looking into, but it's not uncommon to read about people rolling their classes that encapsulate access to DB tables. EJB has had it shares of problems (not the least that it requires an EJB container, so it can't be used in something like Tomcat), but EJB 3 has a much simplified development/deployment model, so that may change in the future. It's also much close to the latest version of Hibernate 3 now.
expectation is the root of all heartache - shakespeare. tiny ad: