Generated by GPT-5-mini| Apache Struts | |
|---|---|
| Name | Apache Struts |
| Developer | Apache Software Foundation |
| Released | 2000 |
| Programming language | Java (programming language) |
| Operating system | Cross-platform |
| License | Apache License |
Apache Struts Apache Struts is an open-source framework for building web applications in Java (programming language). It provides a Model–View–Controller (MVC) architecture and a set of reusable components to simplify development for enterprise applications used by organizations such as LinkedIn, eBay, Yahoo!, AT&T, and Citigroup. Struts has influenced and been contemporaneous with frameworks like Spring Framework, Hibernate (framework), JavaServer Faces, Google Web Toolkit, and web platforms including Java EE and Spring Boot.
Struts originated in 2000 as a project by Craig McClanahan, later donated to the Apache Software Foundation and developed alongside projects like Tomcat, Ant (software), Maven (software), and Lucene (software). Early releases competed with frameworks such as Apache Tapestry and Jakarta Struts forks, while later major revisions responded to trends set by Ruby on Rails and Django (web framework). The project evolved through Struts 1 and Struts 2, the latter incorporating architecture from the WebWork framework and addressing needs identified during enterprise deployments at companies like Sun Microsystems and IBM.
Struts implements a centralized controller pattern using a servlet filter or servlet similar to patterns employed in Jakarta Servlet containers such as Apache Tomcat and Jetty (web server). Core components include an Action or ActionServlet, Interceptors influenced by Aspect-oriented programming practices found in AspectJ, a configuration layer using XML akin to Spring Framework's configuration, and View technologies like JSP, Freemarker, Velocity (software), and Thymeleaf. Integration points exist for persistence layers like Hibernate (framework), service layers deployed on JBoss, GlassFish, or WebLogic Server, and client-side toolkits including jQuery, AngularJS, and React (JavaScript library).
Struts provides request mapping, input validation, type conversion, and internationalization comparable to features in Spring MVC and Play Framework. It offers tag libraries for UI rendering used with JSP and template support for Freemarker and Velocity (software), plus support for AJAX patterns similar to integrations seen in Dojo Toolkit and Prototype (JavaScript framework). Security features include role-based access patterns that complement containers like Apache Tomcat and identity systems such as OAuth 2.0 providers and LDAP directories, while logging and diagnostics integrate with Log4j and SLF4J.
Struts has been subject to high-profile security incidents: a critical remote code execution vulnerability in 2017 drew comparisons to breaches at organizations including Equifax, prompting emergency responses from the United States Computer Emergency Readiness Team and advisories from CVE numbering authorities. The project has issued patches and guidance coordinated with entities such as National Institute of Standards and Technology and CERT/CC. Security hardening practices for Struts deployments reference tools and standards from OWASP, dependency scanning with Maven (software) plugins, static analysis from vendors like SonarSource, and runtime protection strategies used by enterprises including Microsoft and Amazon (company).
Struts has been adopted in large-scale web portals, e-commerce platforms, and internal enterprise systems at companies like Bank of America, Verizon Communications, Capital One, Walmart, and Cisco Systems. Use cases include form-based data entry systems, content management integration with Alfresco, workflow orchestration alongside Activiti (software), and service-oriented architectures integrated with Apache CXF and Apache Camel. Migration paths often involve moving to Spring Boot or microservices architectures using Docker and Kubernetes in organizations such as Netflix and Spotify.
Development is governed by the Apache Software Foundation's meritocratic model with contributors and committers from corporations and independent developers, similar to governance models in projects like Apache Hadoop, Apache Spark, Apache Kafka, and Apache HTTP Server. Releases follow semantic versioning and are managed with tools such as Maven (software), continuous integration provided by systems like Jenkins (software), and issue tracking via JIRA (software). The project participates in community events alongside ApacheCon and collaborates with standards bodies and vendors including Oracle Corporation, Red Hat, and Eclipse Foundation.
Category:Java (programming language) web frameworks