If you're doing Java web development, can't hurt to look into Spring.
Besides core Spring, you may also want to check out Spring Web Flow. It plays the part of the Controller in MVC, and breaks down application navigation into a state machine. This consists of reusable flow definitions containing states (action, view, decision, subflow, end) and the transitions between them. It knows the current state the user is executing, so the user can't short-circuit app navigation to an arbitrary state by entering a custom URL.
It also defines additional attribute scopes (conversation, flow, flash, view). This is useful because in a typical web app, the data used lasts longer than a request but shorter than the entire session. The developer usually has to manually insert and remove into and from session scope, which is essentially manual memory management. The new scopes cover more typical usage scenarios, and are cleaned up automatically at appropriate times (when a flow ends, flow scope is cleaned up. When a view-state is exited, view scope is cleaned up etc.).
SWF works with Spring MVC, JSF / Facelets, and Portlets.