In my opinion, Java web development hasn’t progressed much. There are the few frameworks that try to change the mold (I’m using Wicket, which isn’t bad), but in general you’re 1. dealing with Java on the web, which will always be a massive negative in my book and 2. dealing with a ton of XML configuration if you stay with the “safe” frameworks (Spring, Struts, etc).
That being said, I have to suggest giving Wicket a try (http://wicket.sourceforge.net/), as it is the only framework without ANY XML configuration crap. It is a different way of thinking, basically SWT / Swing on the Web, and the library does have the best AJAX implementation I’ve ever seen because of this. Otherwise, another framework gaining traction is Tapestry.
And just because I need to vent, Hibernate is really, really ticking me off at times. Personally, be glad you’re not dealing with a database here, as coming from ActiveRecord, using Hibernate feels like stepping 5 years into the past. Nothing is obvious, and the whole philosophy of “define the object layer, Hibernate writes out the database schema for you” is nothing short of insane.
Java was never meant to be a web language, and from here on out, I will be fighting vigorously to never do a Java website project again.