Struts is a mature open source MVC(Model-View-Controller) frame work for web applications. With Struts we can easily integrate various technologies like J2EE , Hibernate, iBATIS, JSTL and JSF, Velocity Templates, XSLT etc. Apart from being a framework Struts also provides utilities and custom tags to cut down development time.
Struts is a very popular framework and has now become a de-facto standard for Java applications. The reasons for this popularity are given below
Advantages of Struts
Struts imposes the MVC framework so that no body goes off loop and does his own non standard implementation. Before Struts MVC implementations were development team’s perception of MVC which lead to lots of confusion, errors and increased the learning curve for that implementation. With Struts this human element is gone and a standard process of MVC is imposed on the developers
Advantage ConfigurationsStruts works completely on configurations in XML and property files rather than hard coding the components in the Java code. All the elements like Controller actions, redirects, validations, exceptions can be incorporated by configurations and can be easily tracked at a later stage.
Struts provides lots of utilities derived from Apache Commons to make our life easier like ready made Form Beans for request parameters, Validation controls and Custom tags
Disadvantages of Struts
Frameworks mean bigger call stacks due to various function calls which results in lesser performance. However this is a performance sacrifice is offset by major advantage of standardized development process advantage.
Though this is not an issue with experienced developers, the new developers have a bigger learning curve. The documentation at Apache is mostly targeted at the experienced audience.
If you want to use Struts then you will have to just follow the rules set by this framework. Going in a different way is pretty tedious.
Disadvantage Small Programs
Struts is not always useful for a smaller programs because there is no point in wasting time on various Struts configurations when you can write your program in a jiffy. The program requirements should be carefully evaluated before using Struts.