“Let’s set aside for the moment the possibility of using another language. Assuming that we must continue to use a Java web framework, what would you suggest instead of Struts or Spring MVC?”

Seam or RIFE.

I hesitate at Seam partly because it still feels heavy-handed — the simple examples do a disservice by requiring far too much configuration — and I’m not sold on JSF (JSF 2 will help), but I do like much of what I find there. Easier management of conversational scope, for instance. More transparent association between objects and HTML. Given Java 5 or 6, and accepting the whole JBoss thing, this seems a reasonable framework, even if it’s not one that I would really love. The new Seam book is on the way. I’ll let you know how it goes.
RIFE has always held some fascination for me, not in the least because they offer native Java continuations. (I highly recommend that interview with Geert Bevin about continuations, by the way: its the most accessible explanation I’ve seen yet.) They just get a lot right: less painful configuration, decent templating, good testing… I’d really like to dig more into it but am always drawn to other things first. Like Rails. And lift.