Struts has long been the de facto standard web application framework, but over the past couple of years there have been many alternatives attempting to improve over some of the limitations of Struts.
One of the largest changes is many of the newer frameworks such as JSF and Tapestry are event driven and give more flexibility over Struts Actions. This allows you to tie client side events, such as value changes, validation results, form submits to server-side processing. JSF is also the Java EE 5.0 spec for ‘the’ web framework, and so will be supported on all the EE 5.0 application servers when they come out.
There has been a lot of noise over whether JSF may replace Struts – David Geary in his blog (author of Core Java Server Faces) gives a good set of reasons for why you should be considering using JSF instead of Struts for new projects.