---
layout: main-page
title: Welcome to the Apache Struts project
---

<div class="container hero">
  <div class="jumbotron col-md-12">
    <h1>Apache Struts</h1>
    <p>Apache Struts is a free, open-source, MVC framework for creating elegant,
      modern Java web applications. It favors convention over configuration, is
      extensible using a plugin architecture, and ships with plugins to support
      REST, AJAX and JSON.
    </p>
    <a href="download.cgi#struts{{ site.current_version_short }}" class="btn btn-primary btn-large">
      <img src="img/download-icon.svg"> Download
    </a>
    <a href="primer.html" class="btn btn-info btn-large">
      <img src="img/primer-icon.svg"> Technology Primer
    </a>
  </div>
</div>
<div class="container important-notes">
  <div class="col-md-12">
    <div class="row">
      <div class="column col-md-4">
        <h2>Google's Patch Reward program</h2>
        <p>During <a href="http://www.meetup.com/sfhtml5/">SFHTML5</a> Google announced that
          they extend their program to cover the Apache Struts project as well. Now you can earn
          money preparing patches for us!
          <a href="submitting-patches.html#googles-patch-reward-program">read more</a>
        </p>
      </div>
      <div class="column col-md-4">
        <h2>Apache Struts {{ site.current_version }} GA</h2>
        <p>
          Apache Struts {{ site.current_version }} GA has been released<br/>on {{ site.release_date }}.
        </p>
        Read more in <a href="announce.html#a{{ site.release_date_short }}">Announcement</a> or in
        <a href="{{ site.wiki_url }}/Version+Notes+{{ site.current_version }}">Version notes</a>
      </div>
      <div class="column col-md-4">
        <h2>Apache Struts {{ site.prev_version }} GA</h2>
        <p>
          It's the latest release of Struts 2.3.x which contains the latest security fixes,
          released on {{ site.prev_release_date }}.<br/> Read more in <a href="announce.html#a{{ site.prev_release_date_short }}">Announcement</a> or in
          <a href="{{ site.wiki_url }}/Version+Notes+{{ site.prev_version }}">Version notes</a>
        </p>
      </div>
    </div>
    <div class="row">
      <div class="column col-md-4">
        <h2>Immediately upgrade commons-fileupload to version 1.3.3</h2>
        <p>
          The Apache Struts Team recommends to immediately upgrade your Struts 2
          based projects to use the latest released version of Commons
          FileUpload library, which is currently 1.3.3.
          <a href="announce-2018#a20180323">Announcement</a>
        </p>
      </div>
      <div class="column col-md-4">
        <h2>Apache Struts 2.3.x EOL</h2>
        <p>
          The Apache Struts Team informs about discontinuing support for Struts 2.3.x branch, we recommend migration
          to the latest version of Struts, read more in
          <a href="announce#a20190912">Announcement</a>
        </p>
      </div>
      <div class="column col-md-4">
        <h2>Security Advice S2-058 released</h2>
        <p>
            A number of historic Struts Security Bulletins and related CVE database entries contained incorrect affected release version ranges.
            Read more in
          <a href="announce#a20190815">Announcement</a>
        </p>
      </div>
      <div class="column col-md-4">
      </div>
    </div>
  </div>
</div>
<div class="container contact-channels">
  <div class="col-md-12"><h5>Keep in touch: </h5>

    <div class="channels">
      <div class="irc-btn">IRC: <a href="irc://irc.freenode.net/struts">#struts</a></div>
      <div class="facebook-btn">
        <div data-href="https://www.facebook.com/apachestruts" data-width="250" data-layout="button_count"
             data-action="like" data-show-faces="false" data-share="true" class="fb-like"></div>
      </div>
      <div class="gplus-btn">
        <div data-annotation="inline" data-size="medium" data-width="225" data-href="http://struts.apache.org/"
             class="g-plusone"></div>
      </div>
      <div class="twitter-btn"><a href="https://twitter.com/TheApacheStruts" data-show-count="false" data-lang="en"
                                  data-width="240px" data-align="left" class="twitter-follow-button">Follow
        @TheApacheStruts</a></div>
    </div>
  </div>
</div>
