Now there are so many Java Web frameworks, so many people don't know what to choose: JSF, Spring MVC, Stripes, Struts 2, tapestry, and wicket, they all have their own advantages, facing various problems, eight Immortals crossing, recount.
Here's a little talk about their pros and cons.
JSF benefits: Java EE standards, which means that there is a large market demand and more job opportunities to get started fast and relatively easy to have a large number of available component library Disadvantages: A large number of JSP tags on Rest and security support is not a unified implementation. Both the implementation of sun, but also the implementation of Apache--myfaces. Domestic Operamasks also support Ajax, as well as development tools support
Spring MVC Benefits: Provide lifecycle management for overlay bindings (overriding binding), validation (validation), and many presentation layer technologies/frameworks seamlessly integrate: Jsp/jstl, Tiles, Velocity, Freemarker , Excel, XSL, PDF, and so on for easy testing-thanks to the IOC's shortcomings: a large number of XML configuration files are too flexible-no common parent controller without built-in AJAX support
Stripes (now released in version 1.5)
Advantages: Do not need to write XML configuration file Good learning documentation community members are enthusiastic about the disadvantage: the community is smaller than other projects active Actionbean inside the URL is hard coded
Struts 2 Advantages: Simple architecture-easy to extend tag library It's easy to use freemarker or velocity to customize a controller-or page-based navigation disadvantage: The document is poorly organized and overly focused on new features. Most of the struts 1.x of documents searched through Google
Tapestry Advantages: Once you learn it, you will greatly improve productivity HTML template--very advantageous to the page designer every new version, there are a lot of innovation shortcomings: The document is too conceptual, not practical learning curve steep issue cycle long-a large annual upgrade
Wicket benefits: Benefits for Java Developers (not web developers)
Pages and display bindings close community active--there are support drawbacks from creators: HTML templates and Java code next to each other need to have a better understanding of OO wicket logic--everything is done in Java
In terms of project use options, if it is prudent, structs is a good choice; if small items, I prefer stripes, simple and concise.
If you want to use concepts to compare the new framework, you can choose JSF, tapestry, they are component-based, reusability is better. (developers also have to design well, of course)