LLMpediaThe first transparent, open encyclopedia generated by LLMs

Struts (framework)

Generated by GPT-5-mini
Note: This article was automatically generated by a large language model (LLM) from purely parametric knowledge (no retrieval). It may contain inaccuracies or hallucinations. This encyclopedia is part of a research project currently under review.
Article Genealogy
Parent: Rails (web framework) Hop 4
Expansion Funnel Raw 59 → Dedup 0 → NER 0 → Enqueued 0
1. Extracted59
2. After dedup0 (None)
3. After NER0 ()
4. Enqueued0 ()
Struts (framework)
NameStruts
DeveloperApache Software Foundation
Released2000
Programming languageJava (programming language)
Operating systemCross-platform
LicenseApache License

Struts (framework) is an open-source web application framework for developing Java-based web applications. It was created to simplify building model–view–controller (MVC) applications on the Java Platform, Standard Edition and Jakarta EE ecosystems, integrating with servlet containers such as Apache Tomcat, application servers like JBoss EAP, and build tools such as Apache Maven and Gradle (software). Struts influenced a generation of frameworks and libraries used in enterprise software stacks alongside projects like Spring Framework, Hibernate (framework), JSF and Apache Wicket.

Overview

Struts provides a structured approach to web application development by separating concerns among controller, model, and view tiers. It targets developers building applications for platforms including Oracle Database, MySQL, IBM Db2 and integrates with presentation technologies such as JSP, FreeMarker, and Apache Velocity. The project is governed and maintained within the Apache Software Foundation ecosystem and follows community-driven release and contribution practices similar to Apache HTTP Server and Apache Maven.

History and Development

Struts originated at Craig McClanahan's work within the Apache Jakarta Project and was first released in 2000 as part of the Jakarta subproject portfolio alongside projects like Tomcat, Struts 1 became a de facto standard in early 2000s enterprise Java development. With evolving web standards and frameworks such as Ruby on Rails, Spring MVC, and JavaServer Faces gaining popularity, the Struts community initiated a major redesign, resulting in Struts 2 which merged ideas from the WebWork project. The project’s lifecycle reflects governance patterns seen across projects like Apache Ant and Lucene (software), with releases, security advisories, and community contributions coordinated through Apache infrastructure.

Architecture and Components

Struts implements an MVC architecture where the controller mediates between HTTP requests and the business model. The framework includes components comparable to Servlet API constructs and middleware in Apache Tomcat and Jetty. Core elements include an action dispatcher inspired by patterns used in WebWork and interceptors akin to concepts in Spring AOP. View rendering integrates with technologies such as JSP, tag libraries influenced by Jakarta Taglibs, and template engines like FreeMarker. Data binding and validation facilities echo approaches in Hibernate Validator and standards used in JavaBeans.

Configuration and Convention

Early Struts versions emphasized XML configuration files similar to paradigms used in Apache Ant and Spring Framework's configuration. Struts 2 moved toward convention-over-configuration concepts influenced by Ruby on Rails and later Convention over Configuration proponents in the Java ecosystem, reducing boilerplate. Action mappings, interceptor stacks, and result types are declared in configuration artifacts analogous to patterns in JSF faces-config files, while plugin mechanisms parallel architectures in OSGi-based systems and extension models used by Apache Commons.

Features and Functionality

Struts offers request mapping, action invocation, result processing, validation, and type conversion facilities resembling features in Spring MVC and Play Framework. It supports RESTful URL design patterns comparable to those advocated by RESTful Web Services practitioners and integrates with client-side toolchains that include jQuery, AngularJS and React (JavaScript library) through standard JSON endpoints. Internationalization follows conventions used by Unicode Consortium recommendations and localization practices adopted by enterprises like Red Hat. Integration points for persistence layers and transaction management are consistent with usage patterns for Hibernate (framework), JPA, and Spring Transaction Management.

Use Cases and Adoption

Struts found broad adoption in legacy and enterprise applications within sectors that relied on standardized Java stacks, including finance firms using Oracle Financial Services integrations, government agencies deploying on GlassFish and JBoss EAP servers, and telecom operators integrating with MuleSoft or Apache Camel-based middleware. Organizations migrated to Struts when they required a structured MVC approach compatible with Servlet API containers, and many large applications later evolved to frameworks such as Spring Boot or Micronaut while retaining Struts-derived modules.

Security and Criticisms

Over time, Struts has been scrutinized for security vulnerabilities and patch management practices, notably in incidents that drew attention similar to high-profile advisories affecting projects like Apache Tomcat and OpenSSL. Critics cite XML-heavy configuration, complexity in large applications, and coupling patterns reminiscent of legacy EJB usage as drawbacks compared with lightweight frameworks such as Spring Boot and Dropwizard (software). The project responded with security advisories, hardened release processes, and migration guides paralleling remediation steps used by Apache HTTP Server and OpenJDK communities.

Category:Java (programming language) web frameworks