That framework is Spring MVC.
It is DI, adapters for vendor-specific libraries and utility. It's probably not the easiest thing to start with just because it is so flexible that it can be hard to know where to start. A good "Hello World" Spring MVC 3.1 app would go a long way.
I really would like to use the Play Framework and it's so close to being great but it just falls too far short.
I really liked Play 1.x with Groovy templates. It was simple and it pretty much just worked.
Play 2.x has gone in a radically different (and backwards incompatible) direction. It is now part of Typesafe and the goal of Play 2.x is to make Scala a first-class citizen.
The problem is that many of the niceties of Play are either harder to use or just outright missing in Java Play 2.x (eg AppEngine support and the OAuth client were all present in 1.x and are slated for a future 2.1 release).
There really is a niche for a Java Web framework that like Play ditches the JEE/servlet model in favour of the Rails/Django way of doing things (including dynamic class reloading) but doesn't do it in a way that makes me want to stab myself repeatedly.
This would include playing nice with the Java ecosystem (seriously just use Maven and to hell with SBT).
Spring is OK in the service and DAO layers. I prefer Stripes on the web layer. Stripes IMO has a far more sensible approach to laying out the web layer (e.g. combining controller and backing object, fewer configurations, more sensible tag system, etc.).
Try http://blog.springsource.com/2011/01/04/green-beans-getting-...
Agreed that Spring MVC rocks, but Grails[1] is also awesome, and Wicket[2] is pretty cool.
[1]: http://grails.org/
I've been using it for over a year and I have to say it's the most "rails like" framework out there for Java.
However they have just released play! 2.0 (which I have not used yet). This makes some major changes to the framework and it's not all backward compatible.
I does have a heavy emphasis on Scala now, but you can still code everything using Standard Java if you want, although it does somewhat butcher Java "best practices".
it's default ORM is JPA/Hibernate which works well enough as it gives you a ton of helper functions, it even automatically creates getter/setter method at runtime allowing you to do C# Style properties simply by declaring entity members as public.