Man, If you want to produce a good presentation tier, use Wicket. Believe me, i have played with Struts (and other action based frameworks) and things like
JSF and tapestry to know that Wicket is best and most easy to use. Should you need help in that respect, let me know.
For business Tier, you could go for Spring, but I'd say stay away from it, unless you plan to use its feature sets extensively. If you are an AOP fan, try Plexus. I would use Spring (I am in the Spring camp off and on

) only when the project scope is large enough (not being specific on purpose).
For Data access tier duh! no brainer : Hibernate, PERIOD!
Use common J2EE design
patterns that make sense, like Presentation Tier elements ---> using Business Delegate ---> Service Locator (or DI for locating business services) ---> Session Facade --> BO (if using EJBs, if not skip it) ---> DAO.
For DAO, use Generic DAO pattern to model your stuff. (You can make a Generic DAO come closer to "Actual Generic DAO" if you are not using
Java 5+).
Let me know how it turned out.
Regards
Vyas, Anirudh