Apache Struts website screenshot

Apache Struts

Apache Struts is a free, open-source, MVC framework for creating elegant, modern Java web applications. It provides a clean separation between the model, view, and controller layers with a powerful convention-over-configuration approach, interceptor-based AOP support, type-safe configuration, and built-in REST plugin. Apache Struts is maintained by the Apache Software Foundation and is widely used in enterprise Java web development.

Apache Struts publishes 1 API on the APIs.io network: REST Plugin. Tagged areas include Java, MVC, Web Applications, Web Framework, and Open Source.

Apache Struts’ developer surface includes authentication, documentation, developer portal, getting-started guide, release notes, support, FAQ, and 6 more developer resources.

40.7/100 thin ▬ flat Agent 48/100 agent ready Full breakdown ↓
scored 2026-07-21 · rubric v0.4
1 APIs 7 Features
JavaMVCWeb ApplicationsWeb FrameworkOpen Source

API Rating

API Evangelist API Evangelist Rating How this is scored →
scored 2026-07-21 · rubric v0.4
Composite quality — 40.7/100 · thin
Contract Quality 9.4 / 25
Developer Ergonomics 9.1 / 20
Commercial Clarity 10.0 / 20
Operational Transparency 6.2 / 13
Governance 0.0 / 12
Discoverability 6.0 / 10
Agent readiness — 48/100 · agent ready
Machine-Readable Contract 18 / 18
Agentic Access Contract 15 / 15
MCP Server 0 / 12
Machine-Readable Auth 10 / 10
Idempotency 0 / 9
Stable Error Semantics 0 / 8
Request/Response Examples 0 / 7
Rate-Limit Signaling 7 / 7
Typed Event Surface 0 / 6
Agent Skills 0 / 5
Well-Known Catalog 0 / 4
Consent & Bot Identity 0 / 3
Improve this rating by publishing the missing artifacts — every area above can be raised, and the full rubric is at apis.io/rating/. This rating is computed from github.com/api-evangelist/apache-struts: open an issue to ask a question, or submit a pull request to add artifacts. Want it done for you? Prioritized profiling — $2,500 →

APIs

Apache Struts REST Plugin

The Struts REST Plugin provides a convention-based REST API framework for building RESTful services. It maps HTTP methods to action methods (GET→index/show, POST→create, PUT→upd...

Collections

Pricing Plans

Rate Limits

Apache Struts Rate Limits

5 limits

RATE LIMITS

FinOps

Features

Convention-Over-Configuration

Zero-XML configuration with naming conventions for action and result mapping.

Interceptor Framework

AOP-style interceptors for cross-cutting concerns like validation, logging, and security.

Type Conversion

Automatic type conversion between HTTP request parameters and Java types.

OGNL Expression Language

Object-Graph Navigation Language for dynamic data binding and expression evaluation.

Tiles Integration

Template composition via Apache Tiles for reusable page layouts.

REST Plugin

Convention-based REST API support with content type negotiation.

Spring Integration

Native Spring Framework integration for dependency injection.

Use Cases

Enterprise Java Web Applications

Build large-scale Java web applications with clean MVC separation.

RESTful Web Services

Create REST APIs using the Struts REST plugin with JSON/XML content negotiation.

Form-Based Applications

Complex form processing with server-side validation and type conversion.

Integrations

Spring Framework

Native Spring IoC container integration for dependency injection.

Hibernate

Hibernate ORM integration for database persistence in action classes.

Apache Tiles

Template composition framework for reusable page layouts and components.

FreeMarker

FreeMarker template engine support as an alternative to JSP views.

Velocity

Apache Velocity template engine for HTML view rendering.

Resources

Get Started 2

Portal, sign-up, and the first successful call

Documentation 1

Reference material describing how the API behaves

Agent Surfaces 1

MCP servers, agent skills, and machine-readable catalogs

Build 1

SDKs, sample code, and the tooling you integrate with

Access & Security 3

Authentication, authorization, and security posture

Operate 3

Status, limits, changes, and where to get help

Commercial 1

Pricing, plans, and the legal terms of use

Company 1

The organization behind the API

Source (apis.yml)

apis.yml Raw ↑
opencollection: 1.0.0
info:
  name: Apache Struts REST Plugin
  version: 1.0.0
request:
  auth:
    type: basic
    username: '{{username}}'
    password: '{{password}}'
items:
- info:
    name: resource
    type: folder
  items:
  - info:
      name: List resources (index)
      type: http
    http:
      method: GET
      url: http://{host}/{context}/:resource
      params:
      - name: resource
        value: ''
        type: path
        description: The resource name (mapped to a Struts controller)
    docs: List resources (index)
  - info:
      name: Create a new resource
      type: http
    http:
      method: POST
      url: http://{host}/{context}/:resource
      params:
      - name: resource
        value: ''
        type: path
        description: The resource name (mapped to a Struts controller)
      body:
        type: json
        data: '{}'
    docs: Create a new resource
  - info:
      name: Render form for a new resource (editNew)
      type: http
    http:
      method: GET
      url: http://{host}/{context}/:resource/new
      params:
      - name: resource
        value: ''
        type: path
        description: The resource name (mapped to a Struts controller)
    docs: Render form for a new resource (editNew)
  - info:
      name: Show a single resource by id
      type: http
    http:
      method: GET
      url: http://{host}/{context}/:resource/:id
      params:
      - name: resource
        value: ''
        type: path
        description: The resource name (mapped to a Struts controller)
      - name: id
        value: ''
        type: path
        description: Resource identifier
    docs: Show a single resource by id
  - info:
      name: Update a single resource (update)
      type: http
    http:
      method: PUT
      url: http://{host}/{context}/:resource/:id
      params:
      - name: resource
        value: ''
        type: path
        description: The resource name (mapped to a Struts controller)
      - name: id
        value: ''
        type: path
        description: Resource identifier
      body:
        type: json
        data: '{}'
    docs: Update a single resource (update)
  - info:
      name: Delete a single resource (destroy)
      type: http
    http:
      method: DELETE
      url: http://{host}/{context}/:resource/:id
      params:
      - name: resource
        value: ''
        type: path
        description: The resource name (mapped to a Struts controller)
      - name: id
        value: ''
        type: path
        description: Resource identifier
    docs: Delete a single resource (destroy)
  - info:
      name: Render edit form for an existing resource (edit)
      type: http
    http:
      method: GET
      url: http://{host}/{context}/:resource/:id/edit
      params:
      - name: resource
        value: ''
        type: path
        description: The resource name (mapped to a Struts controller)
      - name: id
        value: ''
        type: path
        description: Resource identifier
    docs: Render edit form for an existing resource (edit)
bundled: true