Comparison of JSF, spring MVC, Stripes, struts2, tapestry, Wicket

Source: Internet
Author: User
Tags to domain

By interviewing the authors of these frameworks, Matt discusses various open-source Java Web frameworks with them, highlights the strengths of each framework, and listens to the comments of the Framework authors on other frameworks, we hope to learn about the future development direction of these frameworks.
The following are some interviewees:

JSF: Jacob hookom
Rife: Geert Bevin
Seam: Gavin king
Spring MVC: Rob harrop
Spring web flow: Rob harrop and Keith Donald
Stripes: Tim Fennell
Struts 1: Don Brown
Tapestry: Howard Lewis ship
Trails: Chris Nelson
Struts 2: Patrick lightbody
Wicket: eelco hillenius

Matt summarized the interview as follows:

If you want a web application to have functionality similar to a desktop program, you can trust the JSF standard specifications and the support of a large number of third-party component libraries.

Spring MVC:

It integrates many different technologies, which can be widely used in different types of projects. It can be used as a basic platform for Web application development.


It can be applied to programs with a large number of complex data interactions; it has powerful type conversion, binding and verification functions; it makes it easy to manage large complex forms and map them directly to domain objects ......


In medium to large projects, the performance is outstanding (of course, you can only apply it to a single page). In these projects, you can leverage it by simply creating new components.

Struts 2:

Generally, it is more suitable for small project teams who want to start their work and are willing to spend a lot of time learning the open-source tools they use. The goal of struts 2 is not the "armchairs programmers" who prefer drag-and-drop development ".


It is very suitable for internal/external network applications: the UI is very complex and you want to make full use of your developer resources.

The above summary highlights the strengths of each framework. However, what are their disadvantages?

Matt proposed a standard for evaluating the quality of a framework:

◆ Ajax support

Is it built-in? Is it easy to use?

◆ Bookmarks

Can a user add a page to favorites and return it easily?


Is it easy to use? Is client (JavaScript) Verification supported?

◆ Testability

Is it easy to leave the container test controller?

◆ Submit and redirect

How does the framework handle repeated submissions?

◆ Internationalization

How to support internationalization? Is it easy for controllers to use international information?

◆ Page Modification

What type of page modification/composition mechanism does the framework support?

◆ Community and technical support

Can a question be answered quickly and respectfully?

◆ Development tools

Is there any good tool that supports this framework, especially ide?

◆ Market Demand

After learning this framework, can it help you find a job?

◆ Number of positions

What are the requirements for this framework skill on and

I think this evaluation standard is worth your reference.

Based on these evaluation criteria, Matt then elaborated on the frameworks as follows:

Ajax support

◆ JSF: no built-in Ajax support. icefaces and ajax4jsf must be used.
◆ Stripes: no corresponding class library. Streaming output is supported.
◆ Struts 2: built-in dojo with plug-ins for GWT and JSON
◆ Spring MVC: no corresponding class library. You need to use the DWR and spring MVC extensions.
◆ Tapestry: In tapestry 4.1, there is a built-in dojo
◆ Wicket: supported by dojo and script. aculo. Us


◆ JSF: You can submit it at will-URL is not even considered
◆ Stripes: Use conventions, but you can ignore them.
◆ Struts 2: There is a namespace concept, which makes it easy to add a page to favorites and return it.
◆ Spring MVC: allow full URL Control
◆ Tapestry: there are still some ugly URLs
◆ Wicket: Mount page/URL


◆ JSF: the default international information is ugly, but the configuration is simple.
◆ Stripes and Wicket: Verify with Java class-client verification not supported
◆ Struts 2: ognl is used for powerful expression verification. Client verification is supported only when rules are specified on the action.
◆ Spring MVC: allows you to use the public validators-this is a mature solution
◆ Tapestry: robust verification feature-beautiful international information without customization


◆ Spring MVC and Struts 2: mocks (such as easymock, jmock, and spring MOCKS) can be used for simple tests.
◆ Tapestry: difficult to test, because the page class is abstract and the specific class is simplified.
◆ JSF: The page class can be easily tested. In fact, it is similar to actions in struts 2.
◆ Wicket: wickettester-a powerful solution
◆ Stripes: Includes servlet API mocks and mockroundtrip

Submission and redirection

The easiest way to solve the repeated submission problem is to redirect after submission.

◆ Spring MVC: allows you to add parameters to the Redirection URL.
◆ Stripes, tapestry, and Wicket: Support for "Flash"
◆ Struts 2: a custom solution is required.
◆ JSF: a custom solution is required. It is difficult to add international information to the page bean.


◆ Jstl labels make internationalization easy. There is no uniform standard for how to put internationalized information into the Controller class.
◆ Stripes, spring MVC, and JSF: A resource binding file is used in each region.
◆ Struts 2, tapestry and Wicket: We advocate separating the resource files used by each page/action.
◆ JSF: You need to define the resource binding information on each page.
◆ Tapestry: the label is terrible.

Page Modification

◆ Tiles can be used in struts 2, Spring MVC, and JSF. You need to configure each page.
◆ Sitemesh can be used in all these frameworks (not recommended in JSF, tapestry, or wicket). After the configuration is complete, only a small amount of maintenance is required.

Development Tools

◆ Spring MVC: Spring IDE, but only performs XML verification. It is not a UI/web tool.
◆ Struts 2: Eclipse
◆ Tapestry: spindle, which is very beneficial to the encoding staff
◆ JSF: Many ide support and better performance
◆ Stripes and Wicket: no official tools available
◆ Netbeans currently supports struts *, JSF (+ facelets), tapestry, and Wicket. It does not yet support stripes and spring MVC.

Market Demand

◆ Struts 1: it is still very demanding and widely used.
◆ Spring MVC: more and more popular, but most of them are due to some other features of the Spring framework.
◆ JSF: it soon became popular
◆ Struts 2: gaining ground, but there are few job opportunities
◆ Tapestry: The popularity has increased over the past few years.
◆ Wicket and stripes: Unknown


Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.