This article includes a list ofgeneral references, butit lacks sufficient correspondinginline citations. Please help toimprove this article byintroducing more precise citations.(April 2009) (Learn how and when to remove this message) |
| Apache Struts | |
|---|---|
![]() | |
| Original author | Craig McClanahan |
| Developer | Apache Software Foundation |
| Initial release | May 2000; 25 years ago (2000-05) |
| Final release | 1.3.10 / December 8, 2008; 17 years ago (2008-12-08) |
| Written in | Java |
| Operating system | Cross-platform |
| Platform | Cross-platform (JVM) |
| Successor | Apache Struts 2 |
| License | Apache License 2.0 |
| Website | weblegacy |
| Repository | |
Apache Struts 1 is anopen-sourceweb application framework for developingJava EEweb applications. It uses and extends theJava ServletAPI to encourage developers to adopt amodel–view–controller (MVC) architecture. It was originally created byCraig McClanahan and donated to theApache Foundation in May 2000. Formerly located under the ApacheJakarta Project and known asJakarta Struts, it became a top-level Apache project in 2005.
The WebWork framework spun off from Apache Struts aiming to offer enhancements and refinements while retaining the same general architecture of the original Struts framework. However, it was announced in December 2005 that Struts would re-merge with WebWork. WebWork 2.2 has been adopted asApache Struts 2, which reached its first full release in February 2007.
In addition to the current and constantly evolving successor version Struts 2, aclone of Struts 1 exists since 2022, which updates the legacy framework of Struts 1 to a currentJakarta EE compatible stack.[1]
In a standardJava EE web application, the client will typically call to the server via aweb form. The information is then either handed over to aJava Servlet which interacts with a database and produces anHTML-formatted response, or it is given to aJavaServer Pages (JSP) document that intermingles HTML and Java code to achieve the same result.Both approaches are often considered inadequate for large projects because they mix application logic with presentation and make maintenance difficult.
The goal of Struts is to separate themodel (application logic that interacts with a database) from theview (HTML pages presented to the client) and thecontroller (instance that passes information between view and model). Struts provides the controller (a servlet known asActionServlet) and facilitates the writing of templates for the view or presentation layer (typically in JSP, butXML/XSLT andVelocity are also supported). The web application programmer is responsible for writing the model code, and for creating a central configuration filestruts-config.xml that binds together model, view, and controller.
Requests from the client are sent to the controller in the form of "Actions" defined in the configuration file; if the controller receives such a request it calls the corresponding Action class that interacts with the application-specific model code. The model code returns an "ActionForward", a string telling the controller what output page to send to the client. Information is passed between model and view in the form of specialJavaBeans. A powerful custom tag library allows it from the presentation layer to read and write the content of these beans without the need for any embedded Java code.
Struts is categorized as aModel 2 request-based web application framework.[2]
Struts also supportsinternationalization by web forms, and includes a template mechanism called "Tiles" that (for instance) allows the presentation layer to be composed from independent header, footer, menu navigation and content components.