blob: 8e179163017cb75ca4230eac9d30991a3cf8e55f [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="Date-Revision-yyyymmdd" content="20140918"/>
<meta http-equiv="Content-Language" content="en"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Download a Release</title>
<link href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic" rel="stylesheet" type="text/css">
<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
<link href="/css/main.css" rel="stylesheet">
<link href="/css/custom.css" rel="stylesheet">
<link href="/css/syntax.css" rel="stylesheet">
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="/bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="/js/community.js"></script>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '41']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</head>
<body>
<a href="https://github.com/apache/struts" class="github-ribbon">
<img decoding="async" loading="lazy" style="position: absolute; right: 0; border: 0;" width="149" height="149" src="https://github.blog/wp-content/uploads/2008/12/forkme_right_red_aa0000.png?resize=149%2C149" class="attachment-full size-full" alt="Fork me on GitHub" data-recalc-dims="1">
</a>
<header>
<nav>
<div role="navigation" class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" data-toggle="collapse" data-target="#struts-menu" class="navbar-toggle">
Menu
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="/index.html" class="navbar-brand logo"><img src="/img/struts-logo.svg"></a>
</div>
<div id="struts-menu" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="dropdown">
<a data-toggle="dropdown" href="#" class="dropdown-toggle">
Home<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="/index.html">Welcome</a></li>
<li><a href="/download.cgi">Download</a></li>
<li><a href="/releases.html">Releases</a></li>
<li><a href="/announce-2023.html">Announcements</a></li>
<li><a href="http://www.apache.org/licenses/">License</a></li>
<li><a href="https://www.apache.org/foundation/thanks.html">Thanks!</a></li>
<li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li>
</ul>
</li>
<li class="dropdown">
<a data-toggle="dropdown" href="#" class="dropdown-toggle">
Support<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="/mail.html">User Mailing List</a></li>
<li><a href="https://issues.apache.org/jira/browse/WW">Issue Tracker</a></li>
<li><a href="/security.html">Reporting Security Issues</a></li>
<li><a href="/commercial-support.html">Commercial Support</a></li>
<li class="divider"></li>
<li><a href="https://cwiki.apache.org/confluence/display/WW/Migration+Guide">Version Notes</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/WW/Security+Bulletins">Security Bulletins</a></li>
<li class="divider"></li>
<li><a href="/maven/project-info.html">Maven Project Info</a></li>
<li><a href="/maven/struts2-core/dependencies.html">Struts Core Dependencies</a></li>
<li><a href="/maven/struts2-plugins/modules.html">Plugin Dependencies</a></li>
</ul>
</li>
<li class="dropdown">
<a data-toggle="dropdown" href="#" class="dropdown-toggle">
Documentation<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="/birdseye.html">Birds Eye</a></li>
<li><a href="/primer.html">Key Technologies</a></li>
<li><a href="/kickstart.html">Kickstart FAQ</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/WW/Home">Wiki</a></li>
<li class="divider"></li>
<li><a href="/getting-started/">Getting Started</a></li>
<li><a href="/security/">Security Guide</a></li>
<li><a href="/core-developers/">Core Developers Guide</a></li>
<li><a href="/tag-developers/">Tag Developers Guide</a></li>
<li><a href="/maven-archetypes/">Maven Archetypes</a></li>
<li><a href="/plugins/">Plugins</a></li>
<li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li>
<li><a href="/tag-developers/tag-reference.html">Tag reference</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/WW/FAQs">FAQs</a></li>
<li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li>
</ul>
</li>
<li class="dropdown">
<a data-toggle="dropdown" href="#" class="dropdown-toggle">
Contributing<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="/youatstruts.html">You at Struts</a></li>
<li><a href="/helping.html">How to Help FAQ</a></li>
<li><a href="/dev-mail.html">Development Lists</a></li>
<li class="divider"></li>
<li><a href="/submitting-patches.html">Submitting patches</a></li>
<li><a href="/builds.html">Source Code and Builds</a></li>
<li><a href="/coding-standards.html">Coding standards</a></li>
<li><a href="/contributors/">Contributors Guide</a></li>
<li class="divider"></li>
<li><a href="/release-guidelines.html">Release Guidelines</a></li>
<li><a href="/bylaws.html">PMC Charter</a></li>
<li><a href="/volunteers.html">Volunteers</a></li>
<li><a href="https://gitbox.apache.org/repos/asf?p=struts.git">Source Repository</a></li>
<li><a href="/updating-website.html">Updating the website</a></li>
</ul>
</li>
<li class="apache"><a href="http://www.apache.org/"><img src="/img/apache.png"></a></li>
</ul>
</div>
</div>
</div>
</nav>
</header>
<article class="container">
<section class="col-md-12">
<a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/download.html" title="Edit this page on GitHub">Edit on GitHub</a>
<h1>Download a Release of the Apache Struts</h1>
<p>
The Apache Struts web framework is a free open-source solution for creating Java web applications.
</p>
<p>
You can start with Apache Struts using <a href="//maven.apache.org">Apache Maven</a> and optionally provided
<a href="/maven-archetypes/">archetypes</a> for easier dependency management and version upgrade.
Or download some of the distributions for fully offline development.
</p>
<p>
Use the links below to download a release of Apache Struts from one of our mirrors. You can
<a href="#verify">verify the integrity</a> of the downloaded files using signatures downloaded from our
main distribution directory.
</p>
<h2 id="mirror">Mirror</h2>
<p>
The currently selected mirror is <b>[preferred]</b>. If you encounter a problem with this mirror, please select
another mirror. If all mirrors are failing, there are <i>backup</i> mirrors (at the end of the mirrors list)
that should be available.
</p>
<form action="[location]" method="get" id="SelectMirror">
Other mirrors:
<select name="Preferred">
[if-any https]
[for https]
<option value="[https]">[https]</option>
[end]
[end]
[if-any ftp]
[for ftp]
<option value="[ftp]">[ftp]</option>
[end]
[end]
[if-any backup]
[for backup]
<option value="[backup]">[backup] (backup)</option>
[end]
[end]
</select>
<input type="submit" value="Change"/>
</form>
<p>
You may also consult the
<a href="https://www.apache.org/mirrors/">complete list of mirrors.</a>
</p>
<h2 id="struts-ga">Full Releases</h2>
<h3 id="struts6302">Struts 6.3.0.2</h3>
<p>
The <a href="https://struts.apache.org/">Apache Struts 6.3.0.2</a> is an elegant, extensible
framework for creating enterprise-ready Java web applications. It is available in a full distribution,
or as separate library, source, example and documentation distributions.
Struts 6.3.0.2 is the "best available" version of Struts in the 6.x series.
</p>
<ul>
<li>
<a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+6.3.0.2">Version Notes</a>
</li>
<li>Full Distribution:
<ul>
<li>
<a href="[preferred]struts/6.3.0.2/struts-6.3.0.2-all.zip">struts-6.3.0.2-all.zip</a> (73MB)
[<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-all.zip.asc">PGP</a>]
[<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-all.zip.sha256">SHA256</a>]
</li>
</ul>
</li>
<li>Example Applications:
<ul>
<li>
<a href="[preferred]struts/6.3.0.2/struts-6.3.0.2-apps.zip">struts-6.3.0.2-apps.zip</a> (32MB)
[<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-apps.zip.asc">PGP</a>]
[<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-apps.zip.sha256">SHA256</a>]
</li>
</ul>
</li>
<li>Essential Dependencies Only:
<ul>
<li>
<a href="[preferred]struts/6.3.0.2/struts-6.3.0.2-min-lib.zip">struts-6.3.0.2-min-lib.zip</a> (4MB)
[<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-min-lib.zip.asc">PGP</a>]
[<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-min-lib.zip.sha256">SHA256</a>]
</li>
</ul>
</li>
<li>All Dependencies:
<ul>
<li>
<a href="[preferred]struts/6.3.0.2/struts-6.3.0.2-lib.zip">struts-6.3.0.2-lib.zip</a> (24MB)
[<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-lib.zip.asc">PGP</a>]
[<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-lib.zip.sha256">SHA256</a>]
</li>
</ul>
</li>
<li>Documentation:
<ul>
<li>
<a href="[preferred]struts/6.3.0.2/struts-6.3.0.2-docs.zip">struts-6.3.0.2-docs.zip</a> (12MB)
[<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-docs.zip.asc">PGP</a>]
[<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-docs.zip.sha256">SHA256</a>]
</li>
</ul>
</li>
<li>Source:
<ul>
<li>
<a href="[preferred]struts/6.3.0.2/struts-6.3.0.2-src.zip">struts-6.3.0.2-src.zip</a> (6MB)
[<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-src.zip.asc">PGP</a>]
[<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-src.zip.sha256">SHA256</a>]
</li>
</ul>
</li>
</ul>
<h3 id="struts-25x">Struts 2.5.33</h3>
<ul>
<li>
<a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+2.5.33">Version Notes</a>
</li>
<li>Full Distribution:
<ul>
<li>
<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-all.zip">struts-2.5.33-all.zip</a> (65MB)
[<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-all.zip.asc">PGP</a>]
[<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-all.zip.sha256">SHA256</a>]
</li>
</ul>
</li>
<li>Example Applications:
<ul>
<li>
<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-apps.zip">struts-2.5.33-apps.zip</a> (35MB)
[<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-apps.zip.asc">PGP</a>]
[<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-apps.zip.sha256">SHA256</a>]
</li>
</ul>
</li>
<li>Essential Dependencies Only:
<ul>
<li>
<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-min-lib.zip">struts-2.5.33-min-lib.zip</a> (4MB)
[<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-min-lib.zip.asc">PGP</a>]
[<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-min-lib.zip.sha256">SHA256</a>]
</li>
</ul>
</li>
<li>All Dependencies:
<ul>
<li>
<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-lib.zip">struts-2.5.33-lib.zip</a> (19MB)
[<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-lib.zip.asc">PGP</a>]
[<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-lib.zip.sha256">SHA256</a>]
</li>
</ul>
</li>
<li>Documentation:
<ul>
<li>
<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-docs.zip">struts-2.5.33-docs.zip</a> (13MB)
[<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-docs.zip.asc">PGP</a>]
[<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-docs.zip.sha256">SHA256</a>]
</li>
</ul>
</li>
<li>Source:
<ul>
<li>
<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-src.zip">struts-2.5.33-src.zip</a> (7MB)
[<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-src.zip.asc">PGP</a>]
[<a href="https://archive.apache.org/dist/struts/2.5.33/struts-2.5.33-src.zip.sha256">SHA256</a>]
</li>
</ul>
</li>
</ul>
<h3 id="struts-23x">Struts 2.3.x</h3>
<p>We stopped serving directly the outdated Struts 2.3.x series, you should immediately upgrade to the latest 2.5.x version
or migrate to the latest 6.x.x version. Please check the <b>Prior releases</b> section below, if you are looking for older versions.</p>
<h3 id="struts-extras">Struts Extras</h3>
<ul>
<li>
<a href="https://github.com/apache/struts-extras">README</a>
</li>
<li>Apache Struts 2 Secure Jakarta Multipart parser plugin:
<ul>
<li>
<a href="[preferred]struts/struts-extras/struts2-secure-jakarta-multipart-parser-plugin/1.1/struts2-secure-jakarta-multipart-parser-plugin-1.1.jar">
struts2-secure-jakarta-multipart-parser-plugin-1.1.jar
</a>
[<a href="https://downloads.apache.org/struts/struts-extras/struts2-secure-jakarta-multipart-parser-plugin/1.1/struts2-secure-jakarta-multipart-parser-plugin-1.1.jar.asc">PGP</a>]
[<a href="https://downloads.apache.org/struts/struts-extras/struts2-secure-jakarta-multipart-parser-plugin/1.1/struts2-secure-jakarta-multipart-parser-plugin-1.1.jar.md5">MD5</a>]
[<a href="https://downloads.apache.org/struts/struts-extras/struts2-secure-jakarta-multipart-parser-plugin/1.1/struts2-secure-jakarta-multipart-parser-plugin-1.1.jar.sha1">SHA1</a>]
</li>
</ul>
</li>
<li>Source:
<ul>
<li>
<a href="[preferred]struts/struts-extras/struts2-secure-jakarta-multipart-parser-plugin/1.1/struts2-secure-jakarta-multipart-parser-plugin-1.1-source-release.zip">
struts2-secure-jakarta-multipart-parser-plugin-1.1-source-release.zip
</a>
[<a href="https://downloads.apache.org/struts/struts-extras/struts2-secure-jakarta-multipart-parser-plugin/1.1/struts2-secure-jakarta-multipart-parser-plugin-1.1-source-release.zip.md5">MD5</a>]
[<a href="https://downloads.apache.org/struts/struts-extras/struts2-secure-jakarta-multipart-parser-plugin/1.1/struts2-secure-jakarta-multipart-parser-plugin-1.1-source-release.zip.asc">PGP</a>]
[<a href="https://downloads.apache.org/struts/struts-extras/struts2-secure-jakarta-multipart-parser-plugin/1.1/struts2-secure-jakarta-multipart-parser-plugin-1.1-source-release.zip.sha1">SHA1</a>]
</li>
</ul>
</li>
<li>Apache Struts 2 Secure Jakarta Stream Multipart parser plugin:
<ul>
<li>
<a href="[preferred]struts/struts-extras/struts2-secure-jakarta-stream-multipart-parser-plugin/1.1/struts2-secure-jakarta-stream-multipart-parser-plugin-1.1.jar">
struts2-secure-jakarta-stream-multipart-parser-plugin-1.1.jar
</a>
[<a href="https://downloads.apache.org/struts/struts-extras/struts2-secure-jakarta-stream-multipart-parser-plugin/1.1/struts2-secure-jakarta-stream-multipart-parser-plugin-1.1.jar.asc">PGP</a>]
[<a href="https://downloads.apache.org/struts/struts-extras/struts2-secure-jakarta-stream-multipart-parser-plugin/1.1/struts2-secure-jakarta-stream-multipart-parser-plugin-1.1.jar.md5">MD5</a>]
[<a href="https://downloads.apache.org/struts/struts-extras/struts2-secure-jakarta-stream-multipart-parser-plugin/1.1/struts2-secure-jakarta-stream-multipart-parser-plugin-1.1.jar.sha1">SHA1</a>]
</li>
</ul>
</li>
<li>Source:
<ul>
<li>
<a href="[preferred]struts/struts-extras/struts2-secure-jakarta-stream-multipart-parser-plugin/1.1/struts2-secure-jakarta-stream-multipart-parser-plugin-1.1-source-release.zip">
struts2-secure-jakarta-stream-multipart-parser-plugin-1.1-source-release.zip
</a>
[<a href="https://downloads.apache.org/struts/struts-extras/struts2-secure-jakarta-stream-multipart-parser-plugin/1.1/struts2-secure-jakarta-stream-multipart-parser-plugin-1.1-source-release.zip.md5">MD5</a>]
[<a href="https://downloads.apache.org/struts/struts-extras/struts2-secure-jakarta-stream-multipart-parser-plugin/1.1/struts2-secure-jakarta-stream-multipart-parser-plugin-1.1-source-release.zip.asc">PGP</a>]
[<a href="https://downloads.apache.org/struts/struts-extras/struts2-secure-jakarta-stream-multipart-parser-plugin/1.1/struts2-secure-jakarta-stream-multipart-parser-plugin-1.1-source-release.zip.sha1">SHA1</a>]
</li>
</ul>
</li>
</ul>
<h2 id="prior-releases">Prior releases</h2>
<p>
If you are looking for other versions than above please check the <a href="https://archive.apache.org/dist/struts/">Apache Archive</a> site.
</p>
<h3 id="struts1310">Struts 1.3.10</h3>
<p>
<a href="https://struts.apache.org/struts1eol-announcement.html">Struts 1.3.10 - EOL</a>
is the latest production release of Struts 1. It is available in a full distribution, or as
separate library, source, example and documentation distributions.
</p>
<p>
<b>Important: </b>
<a href="struts1eol-announcement.html">Apache Struts 1 EOL Announcement</a>, including a detailed Q/A section
</p>
<h2 id="verify">Verify the integrity of the files</h2>
<p>
We recommend that you verify the integrity of the downloaded files using the PGP or MD5/SHA256 signatures.
</p>
<p>
The PGP signatures can be verified using PGP or GPG.
First download the
<a href="https://downloads.apache.org/struts/KEYS">KEYS</a> as well as the <code>asc</code>
signature file for the particular distribution.
Make sure you get these files from the <a href="https://downloads.apache.org/struts/">main distribution directory,</a>
rather than from a mirror. Then verify the signatures using
</p>
<p>
<code>
% pgpk -a KEYS
<br/>
% pgpv ${filename}.tar.gz.asc
<br/>
</code>
<em>or</em>
<br/>
<code>
% pgp -ka KEYS
<br/>
% pgp ${filename}.tar.gz.asc
<br/>
</code>
<em>or</em>
<br/>
<code>
% gpg --import KEYS
<br/>
% gpg --verify ${filename}.tar.gz.asc ${filename}.tar.gz
</code>
</p>
<p>
Alternatively, you can verify the MD5 signature on the files. A Unix program called <code>md5</code>
or <code>md5sum</code> is included in many Unix distributions. It is also available as part of
<a href="https://www.gnu.org/software/textutils/textutils.html"> GNU Textutils.</a>
Windows users can get binary md5 programs from <a href="https://www.fourmilab.ch/md5/">here,</a>
<a href="http://www.pc-tools.net/win32/freeware/console/"> here,</a>
or <a href="https://www.slavasoft.com/fsum/">here.</a>
</p>
</section>
</article>
<footer class="container">
<div class="col-md-12">
Copyright &copy; 2000-2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
Apache Struts, Struts, Apache, the Apache feather logo, and the Apache Struts project logos are
trademarks of The Apache Software Foundation. All Rights Reserved.
</div>
<div class="col-md-12">Logo and website design donated by <a href="https://softwaremill.com/">SoftwareMill</a>.</div>
</footer>
<script>!function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (!d.getElementById(id)) {
js = d.createElement(s);
js.id = id;
js.src = "//platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs);
}
}(document, "script", "twitter-wjs");</script>
<script src="https://apis.google.com/js/platform.js" async="async" defer="defer"></script>
<div id="fb-root"></div>
<script>(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
</body>
</html>