The two previous speakers are right, there is no BEST web framework. So it is no surprise that I have another opinion than the other two guys :-)
Also it depends on the requirements and specific scenario for your new web application. Here are my proposals:
1) If you need a CRUD-application, use a CRUD-framework (e.g. the ROMA meta framework for JAVA or Grails if you want to use a modern JVM language).
Also if you need a "quick and dirty" solution for an internal application, these frameworks are excellent.
2) If you want to develope in JAVA almost exclusively (and not use a lot of HTML, CSS and XML) then use GWT. It is easy to learn and offers a rich user interface at the client side (because the whole application is loaded when starting it). Good GUI builder are available (e.g. the commercial GWT Designer).
3) If you want to create a real RIA with lots of great presentation (e.g. animations), then use a RIA-framework (Flex or Silverlight). Mature GUI builders are available. But in addition, you have to learn a new language :-(
4) If you want to create a really large enterprise application or portal software, there is no other option than JSF
- because it is standards-based, widely-used, Portlet-Bridge-Standard and has a lot of addons (ICEFaces, PrimeFaces, CaptainCasa and so on).
And some frameworks I would not use at the moment:
A) I would not use SpringMVC or Struts, I prefer other "modern" component-based frameworks - these two are "old-style", i.e. page-oriented.
B) I would not use Wicket, because I think it is difficult to read and maintain the programming model of Wicketl (e.g. the Swing-like inner classes).
C) I would not use Tapestry 5, although it is easy to learn - but I do not like that the current version 5 is not compatible to version 4 which is not compatible to version 3. So what will happen to version 6? :-(
D) I would not use Lift (yet), because it is not as mature as Grails (bad documentation, some strange concepts). But I really would like to develop a web application for a customer in Scala :-)
E) I would not use ZK because I do not see a use case, where I should use ZK instead of GWT.
F) I would not use JavaFX (yet) for RIAs, because it is not as mature as Flex or Silverlight (available components, community, tool support). I hope this situation will change in one or two years...
Again: Only my subjective opinions! But of course, you are welcome to comment and critisize them... :-)