Hi
I worked with
Struts and a bit velocity , and some
JSF Velocity is a template engine so its diffrent with Struts , JSF , ..
you can generate any kind of code with velocity.
Struts is very well designed and implemented .
Struts is well known MVC framework for web developing and it is very scalable
there are some tools for developing [Struts console , easy Struts ,..]
It has almost all items you mentioned.
Ease of use , you can use jdk1.4.0 with Struts 1.1
data validation is out of the box.
about performance , as much as jsp+servlet can perform well , Struts can.
JSF is almost a new technology , it has its own EL and event model
there are some tools for JSF developing [JSF console,...?] and other commerical IDEs like WSAD 5.1.2 .
its scalable but i cant tell you Struts is scale better or JSF.
I have no experience with Spring , but AFAIK its a
j2ee framework not a web framework.
hope it helps.